从输出 jsoup 中删除数字
remove digits from the output jsoup
我制作了这个简单的代码来提取一些玩家的 ID...但是,不需要整个输出我需要最后 4 位数字,这是我的代码
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class ListLinks {
public static void main(String args[]) throws IOException {
Document doc;
try {
doc = Jsoup.connect("http://sports.yahoo.com/mlb/teams/bal/roster/").get();
Elements urls = doc.select("a[data-pid]");
for (Element url : urls) {
System.out.println(url.attr("data-pid"));
}
} catch (IOException ex) {
Logger.getLogger(ListLinks.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
这是输出
mlb.p.8117
mlb.p.9699
etc...
所以我需要从输出中删除前 6 位数字。请告诉我如何...这是我第一次编程!
提前致谢!!
So I need to remove the the first 6 digits from the output..
我假设你所说的数字实际上是指字符。无论如何,因为您已经知道要从开始删除多少个字符,您可以使用 substring
方法并传递可以创建新字符串的字符索引,如
System.out.println(url.attr("data-pid").substring(6));
但是这个答案是基于这样的假设,即您知道要从中提取子字符串的字符的索引。如果你想让你的代码更安全一些,并且总是删除最后一个 .
之前的任何字符,你可以使用类似
System.out.println(url.attr("data-pid").replaceAll(".*[.]",""));
您还可以使用其他技术,如 @VoodooCoder
中所示的技术
您可以通过不同的方式解决此问题:
String pid = url.attr("data-pid");
- 拆分字符串并检索最后一组字符(在本例中是第二组,因为它从 0 开始):
String result = pid.split("\.")[2];
当您需要存储或与其他组一起做某事时很有用。
您必须确保字符串包含点符号
- 从其索引到字符串末尾搜索点符号和子字符串的最后出现位置:
String result = pid.substring(pid.lastIndexOf(".")+1);
如果您只需要最后一组字符,这很有用。
您必须确保字符串包含点符号
- 使用正则表达式:
Pattern p = Pattern.compile("-?\d+");
Matcher m = p.matcher(pid);
String result = null;
while (m.find()) {
result = m.group();
}
我认为最安全的方法。
我制作了这个简单的代码来提取一些玩家的 ID...但是,不需要整个输出我需要最后 4 位数字,这是我的代码
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class ListLinks {
public static void main(String args[]) throws IOException {
Document doc;
try {
doc = Jsoup.connect("http://sports.yahoo.com/mlb/teams/bal/roster/").get();
Elements urls = doc.select("a[data-pid]");
for (Element url : urls) {
System.out.println(url.attr("data-pid"));
}
} catch (IOException ex) {
Logger.getLogger(ListLinks.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
这是输出
mlb.p.8117
mlb.p.9699
etc...
所以我需要从输出中删除前 6 位数字。请告诉我如何...这是我第一次编程!
提前致谢!!
So I need to remove the the first 6 digits from the output..
我假设你所说的数字实际上是指字符。无论如何,因为您已经知道要从开始删除多少个字符,您可以使用 substring
方法并传递可以创建新字符串的字符索引,如
System.out.println(url.attr("data-pid").substring(6));
但是这个答案是基于这样的假设,即您知道要从中提取子字符串的字符的索引。如果你想让你的代码更安全一些,并且总是删除最后一个 .
之前的任何字符,你可以使用类似
System.out.println(url.attr("data-pid").replaceAll(".*[.]",""));
您还可以使用其他技术,如 @VoodooCoder
您可以通过不同的方式解决此问题:
String pid = url.attr("data-pid");
- 拆分字符串并检索最后一组字符(在本例中是第二组,因为它从 0 开始):
String result = pid.split("\.")[2];
当您需要存储或与其他组一起做某事时很有用。
您必须确保字符串包含点符号
- 从其索引到字符串末尾搜索点符号和子字符串的最后出现位置:
String result = pid.substring(pid.lastIndexOf(".")+1);
如果您只需要最后一组字符,这很有用。
您必须确保字符串包含点符号
- 使用正则表达式:
Pattern p = Pattern.compile("-?\d+");
Matcher m = p.matcher(pid);
String result = null;
while (m.find()) {
result = m.group();
}
我认为最安全的方法。