下面的代码有变量“name”。这可能包含名字或姓氏或仅包含名字。此代码检查变量“name”中是否有空格。如果存在空间,则它会分裂。
但是,我在以下情况下得到“错误:线程中的异常”主“java.lang.ArrayIndexOutOfBoundsException:1在Space.main(Space.java:9)”
如何解决此错误。
public class Space {
public static void main(String[] args) {
String name = "Richard rinse ";
if(name.indexOf(' ') >= 0) {
String[] temp;
temp = name.split(" ");
String fname = temp[0];
String lname = temp[1];
System.out.println(fname);
System.out.println(lname);
} else {
System.out.println("Space does not exists");}
}
}
答案 0 :(得分:3)
你必须使用像这样的“\ s”分割字符串
name.split("\\s+");
答案 1 :(得分:1)
如果有两个空格,temp [1]将为空,给定“Richard rinse”,阵列会以这种方式分割
1理查德
2
3冲洗
你应该trim()
字符串并执行类似
while(name.contains(" "))
name=name.replace(" "," ");
答案 2 :(得分:1)
String[] parts = name.trim().split("\\s+");
if (parts.length == 2) {
// print names out
} else {
// either less than 2 names or more than 2 names
}
trim
删除前导和尾随空格,因为这会导致数组中的前导或尾随空字符串
要拆分的标记是一个正则表达式,表示由一个或多个空白字符(空格,制表符等等)组成的任何字符系列。
答案 3 :(得分:0)
也许就是这样:
public class Space {
public static void main(String[] args) {
String name = "Richard rinse ";
String tname = name.trim().replace("/(\\s\\s+)/g", " ");
String[] temp;
temp = name.split(" ");
String fname = (temp.length > 0) ? temp[0] : null;
String lname = (temp.length > 1) ? temp[1] : null;
if (fname != null) System.out.println(fname);
if (lname != null) System.out.println(lname);
} else {
System.out.println("Space does not exists");
}
}
答案 4 :(得分:-1)
要修剪空白区域,请使用此方法。
public String trimSpaces(String s){
String str = "";
boolean spacesOmitted = false;
for (int i=0; i<s.length; i++){
char ch = s.chatAt(i);
if (ch!=' '){
spacesOmitted = true;
}
if (spacesOmitted){
str+=ch;
}
}
return str;
}
然后在名称处使用修剪过的字符串。