Je souhaite supprimer le dernier caractère d'une chaîne. J'ai essayé de faire ça:
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;
}
}
Obtenir la longueur de la chaîne - 1 et remplacer la dernière lettre par rien (la supprimer), mais chaque fois que j'exécute le programme, il supprime les lettres du milieu qui sont les mêmes que la dernière lettre.
Par exemple, le mot est "admirateur"; après avoir exécuté la méthode, je reçois "admie". Je veux qu'il renvoie le mot admirer.
null != str &&
au début du chèque.str != null &&
!if (str = NULL)
ce qui sera non seulement toujours évalué à faux (NULL == 0 == false) mais assignera également une valeur àstr
laquelle ce n'est probablement pas ce que vous vouliez faire. Vous ne pouvezif (NULL = str)
cependant pas écrire car NULL n'est pas une variable et ne peut pas être affecté à. Donc, c'est une convention plus sûre de mettre le NULL à gauche. Ce n'est cependant pas un problème en Java.Pourquoi pas un seul paquebot?
Code complet
Démo
la source
return str.substring(0,str.length()-1);
comme améliorationPuisque nous sommes sur un sujet, on peut aussi utiliser des expressions régulières
la source
Le problème décrit et les solutions proposées concernent parfois la suppression des séparateurs. Si c'est votre cas, jetez un œil à Apache Commons StringUtils, il a une méthode appelée removeEnd qui est très élégante.
Exemple:
Résultat: "chaîne 1 | chaîne 2 | chaîne 3"
la source
la source
N'essayez pas de réinventer la roue, alors que d'autres ont déjà écrit des bibliothèques pour effectuer des manipulations de chaînes:
org.apache.commons.lang3.StringUtils.chop()
la source
Utilisez ceci:
la source
Dans le cas où vous essayez d' endiguer les mots anglais
Différence entre les stemmers Lucene: EnglishStemmer, PorterStemmer, LovinsStemmer décrit certaines options Java.
la source
Dans Kotlin, vous pouvez utiliser la méthode dropLast () de la classe de chaîne. Il supprimera le nombre donné de la chaîne, retournera une nouvelle chaîne
la source
En ce qui concerne la lisibilité, je trouve que c'est le plus concis
Les index négatifs peuvent être utilisés dans l'utilitaire StringUtils d'Apache. Tous les nombres négatifs sont traités à partir du décalage à partir de la fin de la chaîne.
la source
supprime la dernière occurrence du 'xxx':
supprime la dernière occurrence de 'xxx' si elle est la dernière:
vous pouvez remplacer le «xxx» sur ce que vous voulez mais faites attention aux caractères spéciaux
la source
la source
la source
Regardez la classe StringBuilder:
la source
la source
Une réponse à une ligne (juste une alternative amusante - n'essayez pas cela à la maison, et d'excellentes réponses déjà données):
la source
Pourquoi ne pas utiliser la séquence d'échappement ...!
La vie est beaucoup plus facile maintenant. XD! ~ Une doublure lisible
la source
La plupart des réponses ici ont oublié les paires de substitution .
Par exemple, le caractère 𝕫 (point de code U + 1D56B) ne rentre pas dans un seul
char
, donc pour être représenté, il doit former une paire de substitution de deux caractères.Si l'on applique simplement la réponse actuellement acceptée (en utilisant
str.substring(0, str.length() - 1)
, on épissure la paire de substitution, ce qui conduit à des résultats inattendus.Il convient également de vérifier si le dernier caractère est une paire de substitution:
la source
IndexOutOfBoundsException
? (Par exemple, est-il possible que Character.isSurrogate renvoie true alors qu'il n'y a en fait aucun caractère devant lui, ce qui rendstr.length()-cut
négatif).2
parMath.min(2, str.length())
.Java 8
Sortie: test-ab
la source
J'utilise ceci dans mon code, c'est facile et simple. cela ne fonctionne que lorsque la chaîne est> 0. Je l'ai connecté à un bouton et à l'intérieur de l' instruction if suivante
la source
la source
si vous avez un caractère spécial comme; dans json, utilisez simplement String.replace (";", "") sinon vous devez réécrire tous les caractères de la chaîne moins le dernier.
la source
Comment faire le caractère dans la récursivité à la fin:
par exemple:
la source
Voici une réponse qui fonctionne avec des points de code en dehors du plan multilingue de base (Java 8+).
Utilisation de flux:
Plus efficace peut-être:
la source
Nous pouvons utiliser une sous-chaîne. Voici l'exemple,
la source
remplacez simplement la condition "si" comme ceci:
cela fera l'affaire pour vous.
la source
Supposons que la longueur totale de ma chaîne = 24 Je veux couper le dernier caractère après la position 14 pour terminer, je veux dire que le début de 14 doit être là. J'applique donc la solution suivante.
la source
J'ai dû écrire du code pour un problème similaire. Une façon que j'ai pu le résoudre a utilisé une méthode récursive de codage.
La plupart du code que j'ai vu sur ce sujet n'utilise pas la récursivité, donc j'espère pouvoir vous aider, vous ou quelqu'un qui a le même problème.
la source
Peasy facile:
la source
C'est la seule façon de supprimer le dernier caractère de la chaîne:
la source