Eu quero remover o último caractere de uma string. Eu tentei fazer isso:
public String method(String str) {
if (str.charAt(str.length()-1)=='x'){
str = str.replace(str.substring(str.length()-1), "");
return str;
} else{
return str;
}
}
Obtendo o comprimento da string - 1 e substituindo a última letra por nada (excluindo-o), mas toda vez que executo o programa, ele exclui as letras do meio que são iguais à última letra.
Por exemplo, a palavra é "admirador"; depois de executar o método, recebo "admie". Quero que retorne a palavra admirar.
null != str &&
no início da verificação.str != null &&
!if (str = NULL)
que nem sempre é avaliado como falso (NULL == 0 == false), mas também atribui um valor aostr
qual provavelmente não é o que você deseja fazer.if (NULL = str)
No entanto, você não pôde escrever porque NULL não é uma variável e não pode ser atribuído a. Portanto, é uma convenção mais segura colocar o NULL à esquerda. Este não é um problema em Java.Por que não apenas um forro?
Código completo
Demo
fonte
return str.substring(0,str.length()-1);
como a melhoriaComo estamos falando de um assunto, também é possível usar expressões regulares
fonte
O problema descrito e as soluções propostas às vezes estão relacionadas à remoção de separadores. Se esse for o seu caso, dê uma olhada no Apache Commons StringUtils, que possui um método chamado removeEnd, que é muito elegante.
Exemplo:
Resultaria em: "string 1 | string 2 | string 3"
fonte
fonte
Não tente reinventar a roda, enquanto outros já escreveram bibliotecas para executar a manipulação de strings:
org.apache.commons.lang3.StringUtils.chop()
fonte
Usa isto:
fonte
Caso você esteja tentando conter palavras em inglês
Diferença entre os stemmers Lucene: EnglishStemmer, PorterStemmer, LovinsStemmer descreve algumas opções de Java.
fonte
No Kotlin, você pode usar o método dropLast () da classe string. Ele soltará o número especificado da string, retornará uma nova string
fonte
No que diz respeito à legibilidade, acho que essa é a mais concisa
Os índices negativos podem ser usados no utilitário StringUtils do Apache. Todos os números negativos são tratados a partir do deslocamento do final da string.
fonte
remove a última ocorrência do 'xxx':
remove a última ocorrência do 'xxx' se for a última:
você pode substituir o 'xxx' pelo que deseja, mas cuidado com caracteres especiais
fonte
fonte
fonte
Veja a classe StringBuilder:
fonte
fonte
Uma resposta de uma linha (apenas uma alternativa engraçada - não tente fazer isso em casa e já existem ótimas respostas):
fonte
Por que não usar a sequência de escape ...!
A vida é muito mais fácil agora. XD! ~ Um one-liner legível
fonte
A maioria das respostas aqui se esqueceu de pares substitutos .
Por exemplo, o caractere 𝕫 (ponto de código U + 1D56B) não se encaixa em um único
char
, portanto, para ser representado, ele deve formar um par substituto de dois caracteres.Se alguém simplesmente aplicar a resposta atualmente aceita (usando
str.substring(0, str.length() - 1)
, emendar o par substituto, levando a resultados inesperados.Deve-se também incluir uma verificação se o último caractere é um par substituto:
fonte
IndexOutOfBoundsException
? (por exemplo, é possível que Character.isSurrogate retorne true quando na verdade não houver nenhum caractere antes, tornandostr.length()-cut
negativo).2
porMath.min(2, str.length())
.Java 8
Saída: test-ab
fonte
Estou usando isso no meu código, é fácil e simples. ele só funciona enquanto a String é> 0. Eu o tenho conectado a um botão e dentro da seguinte instrução if
fonte
fonte
se você tem um caráter especial como; no json, basta usar String.replace (";", ""); caso contrário, você deve reescrever todos os caracteres da string menos o último.
fonte
Como fazer o caractere na recursão no final:
por exemplo:
fonte
Aqui está uma resposta que funciona com pontos de código fora do Basic Multilingual Plane (Java 8+).
Usando fluxos:
Talvez mais eficiente:
fonte
Nós podemos usar substring. Aqui está o exemplo,
fonte
apenas substitua a condição "se" assim:
isso fará o truque para você.
fonte
Suponha que o comprimento total da minha string = 24 deseje cortar o último caractere após a posição 14 até o fim, ou seja, quero que o início 14 esteja lá. Então, aplico a seguinte solução.
fonte
Eu tive que escrever um código para um problema semelhante. Uma maneira que eu era capaz de resolvê-lo usava um método recursivo de codificação.
A maior parte do código que eu vi sobre esse tópico não usa recursão, então espero poder ajudar você ou alguém que tenha o mesmo problema.
fonte
Mole-mole:
fonte
Esta é a única maneira de remover o último caractere na string:
fonte