J'ai besoin de me débarrasser de toute la ponctuation de la phrase (STR), mais lorsque je divise la chaîne et essayez de vérifier chaque index, il jette une exception i obtenir ce qui suit ERREUR: P> Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.charAt(String.java:658)
at StringMethods.main(StringMethods.java:109)
3 Réponses :
problème est arr3 [k] .chard (k) code>. Arr3 [k] Vous donne une seule chaîne de caractères peut donc indiquer que 0. Le temps que vous trouvez index> 0 (k> 0 dans ce cas), il lancera stressindexoutofboundsException.
Au lieu de cela, vous pouvez utiliser la chaîne contient la méthode pour trouver une solution à votre problème.
String punct = ",./;:'\"?<>[]{}|`~!@#$%^&*()";
String finaltext = "";
System.out.println(str);
String[] arr3 = str.split("");
for (int k = 0; k < arr3.length; k++) {
if (!punct.contains(arr3[k])) {
finaltext += arr3[k] + "";
}
}
}
Si vous enlevez toute la ponctuation, vous pouvez simplement faire ce que vous voulez réaliser, vous pouvez simplement le faire:
str.replaceAll("[^a-zA-Z 0-9]", "").replaceAll("\\s+", " ").trim();
ok essayer ceci,
solution optimisée :) p>
Le remplacement a besoin de regex !!
Vous vous séparez sur chaque lettre, puis vous appelez
.chardat (k) code> sur la lettre 1 lettre
string code>. Lorsque
k code> est plus que
0 code> il sort des limites
Ne comparez pas non plus à
string code> S avec
! = Code> ou
== code>, utilisez
.equals () code>
String Newstring = str.replaceall ("[^ a-za-z 0-9]" "," ") .ReplaceAll (" \\ s {2,} "," ") .trim (); Code>