拆分字符串会出现越界异常
Splitting String gives an out of bounds exception
我需要去掉句子 (str) 中的所有标点符号,但是当我拆分字符串并尝试检查每个索引时它会抛出异常
String str = "RT @GHCheer2015: Freshman & Sophomores: Interested in cheer at GH? Email: jackemersoncheer@gmail.com";
String punct = ",./;:'\"?<>[]{}|`~!@#$%^&*()";
String finaltext = "";
System.out.println(str);
String[] arr3 = str.split("");
for(int k = 0; k < arr3.length; k++){
for(int i = 0; i < punct.length(); i++){
if((arr3[k].charAt(k)+"") != (punct.charAt(i)+""))
finaltext += arr[k].charAt(k) + "";
}
}
我收到以下错误:
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)
问题是 arr3[k].charAt(k)
。 arr3[k] 为您提供单个字符串,因此索引只能为 0。当您发现索引 >0(在本例中为 k>0)时,它将抛出 StringIndexOutOfBoundsException。
相反,您可以使用字符串包含方法来找到问题的解决方案。
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] + "";
}
}
}
如果要删除所有标点符号,您可以简单地这样做:
str.replaceAll("[^a-zA-Z 0-9]", "").replaceAll("\s+", " ").trim();
@DevilsHnd 在评论中指出了同样的问题
好的,试试这个,
优化方案:)
public static void main(String args[])
{
String str = "RT @GHCheer2015: Freshman & Sophomores: Interested in cheer at GH? Email: jackemersoncheer@gmail.com";
String punct = ",./;:'\"?<>[]{}|`~!@#$%^&*()";
System.out.println(str);
String[] punctArr = punct.split("");
for(int i = 0; i < punctArr.length; i++){
str = str.replace(punctArr[i], "");
}
System.out.println("Final string \n :" + str);
}
我需要去掉句子 (str) 中的所有标点符号,但是当我拆分字符串并尝试检查每个索引时它会抛出异常
String str = "RT @GHCheer2015: Freshman & Sophomores: Interested in cheer at GH? Email: jackemersoncheer@gmail.com";
String punct = ",./;:'\"?<>[]{}|`~!@#$%^&*()";
String finaltext = "";
System.out.println(str);
String[] arr3 = str.split("");
for(int k = 0; k < arr3.length; k++){
for(int i = 0; i < punct.length(); i++){
if((arr3[k].charAt(k)+"") != (punct.charAt(i)+""))
finaltext += arr[k].charAt(k) + "";
}
}
我收到以下错误:
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)
问题是 arr3[k].charAt(k)
。 arr3[k] 为您提供单个字符串,因此索引只能为 0。当您发现索引 >0(在本例中为 k>0)时,它将抛出 StringIndexOutOfBoundsException。
相反,您可以使用字符串包含方法来找到问题的解决方案。
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] + "";
}
}
}
如果要删除所有标点符号,您可以简单地这样做:
str.replaceAll("[^a-zA-Z 0-9]", "").replaceAll("\s+", " ").trim();
@DevilsHnd 在评论中指出了同样的问题
好的,试试这个,
优化方案:)
public static void main(String args[])
{
String str = "RT @GHCheer2015: Freshman & Sophomores: Interested in cheer at GH? Email: jackemersoncheer@gmail.com";
String punct = ",./;:'\"?<>[]{}|`~!@#$%^&*()";
System.out.println(str);
String[] punctArr = punct.split("");
for(int i = 0; i < punctArr.length; i++){
str = str.replace(punctArr[i], "");
}
System.out.println("Final string \n :" + str);
}