Eu tenho uma string como esta:
mysz = "name=john age=13 year=2001";
Eu quero remover os espaços em branco na string. Eu tentei, trim()
mas isso remove apenas os espaços em branco antes e depois de toda a cadeia. Eu também tentei, replaceAll("\\W", "")
mas então o =
também é removido.
Como posso obter uma string com:
mysz2 = "name=johnage=13year=2001"
java
whitespace
zyamat
fonte
fonte
\\W
significa todas as não-palavras, consulte download.oracle.com/javase/6/docs/api/java/util/regex/…Respostas:
st.replaceAll("\\s+","")
remove todos os espaços em branco e caracteres não visíveis (por exemplo, tabulação\n
).st.replaceAll("\\s+","")
est.replaceAll("\\s","")
produza o mesmo resultado.O segundo regex é 20% mais rápido que o primeiro, mas à medida que o número de espaços consecutivos aumenta, o primeiro tem um desempenho melhor que o segundo.
Atribua o valor a uma variável, se não for usado diretamente:
fonte
\w
= Qualquer coisa que seja um caractere de palavra\W
= Qualquer coisa que não seja um caractere de palavra (incluindo pontuação, etc.)\s
= Qualquer coisa que seja um caractere de espaço (incluindo espaço, caracteres de tabulação etc.)\S
= Qualquer coisa que não seja um caractere de espaço (incluindo letras e números, além de pontuação etc.)(Editar: como indicado, você precisa escapar da barra invertida se quiser
\s
alcançar o mecanismo de expressão regular, resultando em\\s
.)fonte
A resposta mais correta para a pergunta é:
Acabei de adaptar esse código das outras respostas. Estou publicando porque, além de ser exatamente o que a pergunta solicitada, também demonstra que o resultado é retornado como uma nova string, a string original não é modificada, como algumas das respostas sugerem.
(Desenvolvedores Java experientes podem dizer "é claro que você não pode realmente modificar uma String", mas o público-alvo desta pergunta pode não saber disso.)
fonte
S
mas não substitui a string queS
aponta para.Que tal
replaceAll("\\s", "")
. Consulte aqui .fonte
Uma maneira de lidar com manipulações de String é o StringUtils do Apache commons.
Você pode encontrá-lo aqui . O commons-lang inclui muito mais e é bem suportado.
fonte
Se você precisar remover espaços inquebráveis também, atualize seu código assim:
fonte
" ab c "
Se você preferir classes de utilitário a expressões regulares, existe um método trimAllWhitespace (String) em StringUtils no Spring Framework.
fonte
Você já recebeu a resposta correta de Gursel Koca, mas acredito que há uma boa chance de que não seja isso que você realmente deseja fazer. Que tal analisar os valores-chave?
fonte
Você deveria usar
ao invés de:
Dessa forma, ele funcionará com mais de um espaço entre cada sequência. O sinal + na regex acima significa "um ou mais \ s"
fonte
replaceAll
repita até que o padrão não corresponda a nenhuma parte da sequência.+
pode tornar marginalmente mais CPU amigável, porque os espaços em branco consecutivos é tratado em uma única operação de substituição, mas essa é a única diferença neste caso. É de fato oAll
, não o+
que está substituindo o espaço em branco não consecutivo na string.A maneira mais fácil de fazer isso é usando a
org.apache.commons.lang3.StringUtils
classe dacommons-lang3
biblioteca, como "commons-lang3-3.1.jar
" por exemplo.Use o método estático "
StringUtils.deleteWhitespace(String str)
" na sua string de entrada e ela retornará uma string depois de remover todos os espaços em branco dela. Eu tentei o seu exemplo de string "name=john age=13 year=2001
" e ele me retornou exatamente a string que você queria - "name=johnage=13year=2001
". Espero que isto ajude.fonte
Você pode fazer isso simplesmente
fonte
fonte
// funciona bem com qualquer espaço * não esqueça o espaço na picada b
fonte
\W
significa "caractere sem palavra". O padrão para caracteres de espaço em branco é\s
. Isso está bem documentado no javadoc Pattern .fonte
Em java, podemos fazer a seguinte operação:
para isso, você precisa importar os seguintes pacotes para o seu programa:
Espero que ajude você.
fonte
Usando Pattern And Matcher é mais dinâmico.
fonte
Usar
mysz.replaceAll("\\s+","");
fonte
Use apache string util class é melhor evitar NullPointerException
Resultado
fonte
Ao utilizar
st.replaceAll("\\s+","")
em Kotlin , certifique-se de embrulhar"\\s+"
com Regex :fonte
Primeiro com espaço, segundo sem espaço.
Então está feito.
fonte
[ \t\n\x0B\f\r]
. Você está apenas fazendo[ ]
espaços normais .fonte
existem muitas maneiras de resolver esse problema. você pode usar a função de divisão ou substituir a função de Strings.
para obter mais informações, consulte o problema smilliar http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
fonte
Para remover espaços no seu exemplo, esta é outra maneira de fazer isso:
O que isso faz é convertê-lo em uma matriz com os espaços sendo os separadores e, em seguida, combina os itens na matriz sem os espaços.
Funciona muito bem e é fácil de entender.
fonte
Existem outros caracteres de espaço também em strings. Portanto, precisamos de substituir o espaço por strings.
Ex: ESPAÇO SEM QUEBRA, ESPAÇO TRÊS POR EM, ESPAÇO DE PONTUAÇÃO
Aqui está a lista de caracteres de espaço http://jkorpela.fi/chars/spaces.html
Então, precisamos modificar
\ u2004 para ESPAÇO TRÊS POR EM
s.replaceAll ("[\ u0020 \ u2004]", "")
fonte
O espaço em branco pode ser removido usando a função isWhitespace da Classe de Caracteres.
fonte
Separe cada grupo de texto em sua própria substring e concatene essas substrings:
fonte
Isso pode ajudar.
fonte
Você também pode dar uma olhada no código Java abaixo. Os códigos a seguir não usam nenhum método "interno".
Entrada:
Resultado:
fonte
fonte
São fornecidas muitas respostas. Gostaria de dar uma solução que seja bastante legível e melhor que o regex.
fonte