我无法用空格分割名称,我似乎无法找出原因。有人可以给我一个解决方案吗?
我的代码是这样的:
public void getPlayerNames(int id){
try {
Document root = Jsoup.connect("http://www.altomfotball.no/element.do?cmd=team&teamId=" + id).get();
Element table = root.getElementById("sd_players_table");
Elements names = table.getElementsByTag("a");
for(Element name : names){
getPlayers().add(new Player(name.text()));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
将足球运动员的名字作为字符串返回。检索名称,如Mario Balotelli,Steven Gerrard等,我假设我可以使用string.split("");得到我的名字和姓氏,但每当我尝试访问字符串数组的第二个空格时,它给我一个超出范围的索引异常。这是试图获取名字的代码
/**
* Method to get the first name of a player
*/
public static String getFirstName(String name){
String[] nameArray = name.split(" ");
return nameArray[0];
}
感谢您的回答!
Sindre M
编辑###### 所以我得到了它的工作,但感谢你的努力。问题是即使我在一个简单的sysout语句中看不到它,名字实际上包含一个"& nbsp&#34 ;;字符,所以我通过在名称上运行replaceAll("& nbsp;","")来解决它,以获得更好的格式。
答案 0 :(得分:0)
如果你正在尝试编写一个屏幕抓取器,你需要在代码中更加防御......绝对先测试数组的长度并记录任何意外的输入,以便以后合并它们......
public static String getFirstName(String name) {
String[] nameArray = name.split(" ");
if (nameArray.length >= 1) { // <== check length before you access nameArray[0]
return nameArray[0];
} else {
// log error
}
return null;
}
此外,Java 8中的java.util.Optional为返回null ...提供了一个很好的替代方法。
public static Optional<String> getFirstName(String name) {
String[] nameArray = name.split(" ");
if (nameArray.length >= 1) {
return Optional.of(nameArray[0]);
} else {
// log error
}
return Optional.empty();
}
答案 1 :(得分:0)
当你从html页面检索时,你可能会进入实际的字符串。尝试调试和检查。
答案 2 :(得分:0)
package com.appkart.examples;
public class SplitProgram {
public void firstNameArray(String nameString) {
String strArr[] = nameString.split(",");
for (String name : strArr) {
String playerName = name.trim();
String firstName = playerName.substring(0, playerName.indexOf(" "));
System.out.println(firstName);
}
}
public static void main(String[] args) {
String nameString = "Mario Balotelli, Steven Gerrard";
SplitProgram program = new SplitProgram();
program.firstNameArray(nameString);
}
}
答案 3 :(得分:0)
我认为正确的答案应该是:
String[] nameArray = name.split("\\s+");
但说实话,stackoverflow上有几个答案。 例如
How to split a String by space
How do I split a string with any whitespace chars as delimiters?
答案 4 :(得分:0)
首先尝试将空格替换为
string.replace(" ","");
然后尝试用[,]分割为
String strAr[] = string.split(",");