我拥有一个需要转换的球员姓名数据库,以便能够与他们进一步合作(例如:我需要Antonio Brown转换为A. Brown)。我的问题是还有一些名称仅包含名字(例如Antonio),因此我得到了ArrayIndexOutOfBoundsException: 1
,还有另一种获取我想要的东西的方法,即使if条件stil split也为什么得到它?
if(spalte[1].contains(" ")){
String[] me = spalte[0].split(" ", 2);
String na = me[0].substring(0);
name = na + ". " + me[1];
} else {
name = spalte[1];
}
答案 0 :(得分:0)
首先,我强烈建议您保持代码格式化并正确命名变量。它不仅可以帮助其他人更好地理解摘录,还可以使调试更加容易。
在处理数组和String::split
时,您必须小心使用索引,因为它们很容易溢出。
是否需要使代码处理多个空格:Antonio Light Brown -> A. L. Brown
?这些步骤很简单,几乎可以使用任意数量的名称:
n-1
的第一个分区代码如下:
String split[] = name.trim().split(" "); // Trim the multiple spaces inside to avoid empty parts
StringBuilder sb = new StringBuilder(); // StringBuilder builds the String
for (int i=0; i<split.length; i++) { // Iterate the parts
if (i<split.length -1) { // If not the last part
sb.append(split[i].charAt(0)).append(". "); // Append the first letter and a dot
} else sb.append(split[i]); // Or else keep the entire word
}
System.out.println(sb.toString()); // StringBuilder::toString returns a composed String
假设:您将如何处理诸如O'Neil
或de Anthony
之类的名称?您可以在for-loop
中包括条件串联。