繁体   English   中英

在特定单词之后从字符串中获取 substring

[英]Getting a substring from a string after a particular word

我有以下字符串。

ABC Results for draw no 2888

我想从这里提取2888 这意味着,我需要在上面的字符串中提取no之后的字符。

我总是在no之后提取数字。 该字符串在其中的其他地方不包含其他no字母组合。 字符串可能包含其他数字,我不需要提取它们。 在数字之前总是会有一个空格,我希望提取的数字总是在字符串的末尾。

我怎么能做到这一点?

yourString.substring(yourString.indexOf("no") + 3 , yourString.length());

你可以试试这个

String example = "ABC Results for draw no 2888";
System.out.println(example.substring(example.lastIndexOf(" ") + 1));

您总是希望努力实现易于配置和修改的东西。 这就是为什么我总是建议选择Regex 模式匹配而不是其他搜索。

示例,请考虑以下示例:

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Play {
  public static void main(String args[]) { 
    Pattern p = Pattern.compile("^(.*) Results for draw no (\\d+)$");
    Matcher m = p.matcher("ABC Results for draw no 2888");
    m.find();
    String groupName = m.group(1);
    String drawNumber = m.group(2);
    System.out.println("Group: "+groupName);
    System.out.println("Draw #: "+drawNumber);
  }
}

现在从提供的模式中,我可以轻松识别有用的部分。 它可以帮助我识别问题,并且我可以识别模式中对我有用的其他部分(我添加了组名)。

另一个明显的好处是我可以轻松地将这种模式从外部存储在配置文件中。

你也可以做这样的事情

String demo="ABC Results for draw no 2888";

demo.substring(demo.indexOf("no") + 3)

对于任何愿意使用无处不在的 Apache Commons StringUtils 实现这一目标的人:

String parsed = StringUtils.substringAfter(yourString, "no ");

String myStr="Substring a String after:xyz"; System.out.println(StringUtils.substringAfter(myStr, "after:")); 结果是 xyz

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM