Considere el siguiente ejemplo:
" Hello this is a long string! "
Quiero convertir eso a:
"Hello this is a long string!"
objective-c
ios
nsstring
hfossli
fuente
fuente
Regex y NSCharacterSet está aquí para ayudarlo. Esta solución recorta los espacios en blanco iniciales y finales, así como múltiples espacios en blanco.
El registro
final
daPosibles patrones alternativos de expresiones regulares:
[ ]+
[ \\t]+
\\s+
Resumen de rendimiento
La facilidad de extensión, el rendimiento, las líneas numéricas de código y la cantidad de objetos creados hacen que esta solución sea adecuada.
fuente
stringByReplacingOccurrencesOfString:
. No puedo creer que no lo supiera.En realidad, hay una solución muy simple para eso:
( Fuente )
fuente
Con una expresión regular, pero sin la necesidad de ningún marco externo:
fuente
NSRegularExpressionSearch
dice que solo funciona con losrangeOfString:...
métodosUna solución de una línea:
fuente
Esto debería hacerlo ...
fuente
Otra opción para regex es RegexKitLite , que es muy fácil de integrar en un proyecto de iPhone:
fuente
Prueba esto
fuente
Aquí hay un fragmento de una
NSString
extensión, donde"self"
está laNSString
instancia. Se puede utilizar para colapsar los espacios en blanco contigua en un único espacio mediante el paso en[NSCharacterSet whitespaceAndNewlineCharacterSet]
y' '
a los dos argumentos.fuente
Solución alternativa: obtenga una copia de OgreKit (la biblioteca de expresiones regulares de Cocoa).
Toda la función es entonces:
Corto y dulce.
Si buscas la solución más rápida, una serie de instrucciones cuidadosamente construidas
NSScanner
probablemente funcionaría mejor, pero eso solo sería necesario si planeas procesar enormes (muchos megabytes) bloques de texto.fuente
según @Mathieu Godart es la mejor respuesta, pero falta una línea, todas las respuestas solo reducen el espacio entre las palabras, pero cuando tienen pestañas o espacio en la pestaña, así: "esto es texto \ t, y \ tTab entre, etc. "en el código de tres líneas lo haremos: la cadena que queremos reducir espacios en blanco
el resultado es
sin reemplazar la pestaña, el resultado será:
fuente
También puede usar un argumento while simple. No hay magia RegEx allí, así que tal vez sea más fácil de entender y modificar en el futuro:
fuente
Seguir dos expresiones regulares funcionaría según los requisitos
Luego aplique el método de instancia de nsstring
stringByReplacingOccurrencesOfString:withString:options:range:
para reemplazarlos con un solo espacio en blanco.p.ej
Nota: No utilicé la biblioteca 'RegexKitLite' para la funcionalidad anterior para iOS 5.xy superior.
fuente