2009-11-27 15 views
46

Tengo un NSString así:Eliminación de caracteres de nueva línea de NSString

Hello 
World 
of 
Twitter 
Lets See this 
> 

quiero transformarlo a:

Hola mundo de Twitter deja ver este>

¿Cómo puedo hacer esto? Estoy usando Objective-C en un iPhone.

+7

downvoted porque todavía no puede aceptar una respuesta ... – anders

+1

Ramesh, aceptar la respuesta tal vez? la gente te ayudó y lo mínimo que puedes hacer es aceptar su respuesta correcta e increíble. – GeneCode

Respuesta

125

dividir la cadena en componentes y unirse a ellos por el espacio:

NSString *newString = [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]] componentsJoinedByString:@" "]; 
+0

Ya lo he intentado pero lo siento no luck man –

+2

-stringByTrimmingCharactersInSet eliminará caracteres solo al principio y al final de la cadena – Vladimir

+0

bien, ese es el punto que tengo nuevos caracteres de línea por todos lados –

8

estoy usando

[...] 
myString = [myString stringByReplacingOccurrencesOfString:@"\n\n" withString:@"\n"]; 
[...] 

/Paul

79


La división de la cadena en los componentes y volver a unir ellas es una una manera muy larga de hacer esto. Yo también uso el mismo método que mencionó Paul. Puede reemplazar cualquier ocurrencia de cadena. En relación con lo que Pablo dijo que se puede reemplazar caracteres de nueva línea con espacios de esta manera:

myString = [myString stringByReplacingOccurrencesOfString:@"\n" withString:@" "]; 
+2

Esta respuesta es la mejor, ya que deja muy claro lo que está sucediendo (todos los caracteres de nueva línea están siendo reemplazados por espacios) y no requiere la creación de una matriz extraña. y ramesh rao, realmente debería aceptar la respuesta que mejor resuelva el problema para alentar a las personas a continuar respondiendo sus preguntas. – theMikeSwan

+6

Esto no necesariamente hará el trabajo, por lo menos es probable que también quieras incluirlo. '[NSCharacterSet newlineCharacterSet]' es "Un conjunto de caracteres que contiene los caracteres de nueva línea (U + 000A-U + 000D, U + 0085)" por lo que es mucho más completo. http://en.wikipedia.org/wiki/Newline – robotspacer

+1

Estoy de acuerdo con @robotspacer en realidad. Si necesita cobertura de * todos * caracteres de nueva línea, entonces la ruta 'NSCharacterSet' es el camino a seguir. Mi solución aún elimina 'U + 000A' y muestra el uso de' stringByReplacingOccurrencesOfString' al menos así que vale la pena mantenerlo aquí. – imnk

2

Mi caso también contiene \r, incluyendo \n, [NSCharacterSet newlineCharacterSet] no funciona, en cambio, mediante el uso de

htmlContent = [htmlContent stringByReplacingOccurrencesOfString:@"[\r\n]" 
                withString:@"" 
                 options:NSRegularExpressionSearch 
                  range:NSMakeRange(0, htmlContent.length)]; 

resuelto mi problema.

Btw, \\s eliminará todos los espacios en blanco, lo que no se espera.

2

Proporcionar una versión 3.0 de Swift 's respuesta aquí:

self.content = self.content.components(separatedBy: CharacterSet.newlines).joined(separator: " ") 

Proporcionar una versión Swift 3.0 de @Kjuly' @hallski respuesta s aquí (Nota Sustituye a cualquier número de nuevas líneas con un solo \ n . yo preferiría no utilizar expresar regular si alguien me puede apuntar una mejor manera):

self.content = self.content.replacingOccurrences(of: "[\r\\n]+", with: "\n", options: .regularExpression, range: Range(uncheckedBounds: (lower: self.content.startIndex, upper: self.content.endIndex))); 
Cuestiones relacionadas