我有像:
这样的字符串 String test="top 10 products";
String test2="show top 10 products";
有没有办法检查单词" top"有一个跟随它的数字?如果是这样,如何将该数字转换为另一个字符串?
我正在考虑使用indexOf("top")
并添加4并尝试获取下一个单词。不确定它是如何工作的。有什么建议吗?
答案 0 :(得分:1)
如果你只想在单次/第一次出现“top”后提取一个可能的数字,这是一种可行的方法。不要忘记检查这个词的存在,并且它背后有一些东西。
您也可以使用正则表达式,这需要更少的错误检查:
top\\s+([0-9]+)
您甚至可以使用Pattern
,然后迭代Matcher.find()
方法并提取多个匹配的数字:
Pattern pat = Pattern.compile("top\\s+([0-9]+)");
Matcher matcher = pat.matcher("top 10 products or top 20 products");
while (matcher.find()) {
System.out.println(matcher.group(1));
}
答案 1 :(得分:0)
邪恶的正则表达可以帮助你。
String test="top 10 products";
System.out.println(test.replaceAll(".*?\\w+\\s+(\\d+).*", "$1"));
O / P:
10
注意:如果字符串中没有“Word [space] digits”,这将返回整个String。您将不得不对实际的String和返回的String进行长度检查。如果长度相同,那么您的String不包含预期的模式。