从输出 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();
}

我认为最安全的方法。