Considere o seguinte exemplo:
" Hello this is a long string! "
Eu quero converter isso para:
"Hello this is a long string!"
objective-c
ios
nsstring
hfossli
fonte
fonte
O Regex e o NSCharacterSet estão aqui para ajudá-lo. Essa solução apara os espaços em branco iniciais e finais, bem como vários espaços em branco.
O registro
final
fornecePossíveis padrões alternativos de regex:
[ ]+
[ \\t]+
\\s+
Resumo do desempenho
A facilidade de extensão, desempenho, número de linhas de código e o número de objetos criados tornam essa solução apropriada.
fonte
stringByReplacingOccurrencesOfString:
. Não posso acreditar que não sabia disso.Na verdade, há uma solução muito simples para isso:
( Fonte )
fonte
Com uma regex, mas sem a necessidade de qualquer estrutura externa:
fonte
NSRegularExpressionSearch
diz que ele só funciona com orangeOfString:...
métodosUma solução de uma linha:
fonte
Isso deve servir...
fonte
Outra opção para o regex é o RegexKitLite , que é muito fácil de incorporar em um projeto do iPhone:
fonte
Experimente isto
fonte
Aqui está um trecho de uma
NSString
extensão, onde"self"
está aNSString
instância. Ele pode ser usado para recolher espaços em branco contíguos em um único espaço, passando para[NSCharacterSet whitespaceAndNewlineCharacterSet]
e' '
para os dois argumentos.fonte
Solução alternativa: obtenha uma cópia do OgreKit (a biblioteca de expressões regulares do Cocoa).
Toda a função é então:
Curto e grosso.
Se você procura a solução mais rápida, uma série de instruções cuidadosamente construída
NSScanner
provavelmente funcionaria melhor, mas isso só seria necessário se você planeja processar grandes blocos de texto (muitos megabytes).fonte
de acordo comathieu Godart, é a melhor resposta, mas falta uma linha, todas as respostas reduzem o espaço entre as palavras, mas quando se têm guias ou têm espaço no lugar, é assim: "este é o texto \ t e \ tTab entre, assim por diante "no código de três linhas, vamos: a string que queremos reduzir os espaços em branco
o resultado é
sem substituir a guia, o resultado será:
fonte
Você também pode usar um argumento while simples. Não há mágica RegEx lá, então talvez seja mais fácil entender e alterar no futuro:
fonte
Seguir duas expressões regulares funcionaria dependendo dos requisitos
Em seguida, aplique o método de instância do nsstring
stringByReplacingOccurrencesOfString:withString:options:range:
para substituí-los por um único espaço em branco.por exemplo
Nota: Eu não usei a biblioteca 'RegexKitLite' para a funcionalidade acima para iOS 5.xe acima.
fonte