如何在Java中获取两个数字之间的字符串? [复制]
Posted
技术标签:
【中文标题】如何在Java中获取两个数字之间的字符串? [复制]【英文标题】:How to get the string between two numbers in Java? [duplicate] 【发布时间】:2022-01-22 19:39:23 【问题描述】:可能重复:How to check that the string contains the number format in Java?
假设我有一个格式如下的字符串:
string1 = "1. Stack Overflow 2. Google 3. Reddit"
如何找出数字之间的子串?
【问题讨论】:
-1 表示完全没有努力。 @MattBall 我支持。 有些人不知道寻求帮助的正确方式,有些人对此怀有敌意。这两种方法同样无知。 【参考方案1】:字符串拆分功能在这里也可以正常工作:
String test = "1. Stack overflow 2. Google";
String[] test2 = test.split("\\d\\.");
test2[0]
将是 " Stack overflow"
test2[1]
将是 " Google"
您可以使用test2[0].trim()
去掉多余的空格。
【讨论】:
【参考方案2】:遍历String
的每个字符,看看它的数字是否标记开始索引并在末尾标记结束索引并执行substring
*使用方法*
Character.isDigit()
String.toCharArray()
String.subsstring()
【讨论】:
我们不是代码工厂。我在这个答案中给出的不仅仅是代码:)【参考方案3】:您可以使用正则表达式和捕获组:
String str = "1. Stack overflow 2. Google";
Matcher m = Pattern.compile("\\d\\. (.*?) \\d").matcher(str);
if (m.find())
System.out.println(m.group(1)); // Prints "Stack overflow"
IDEONE.com demo
【讨论】:
这里的 m.group(1) 中的“1”是什么意思?如何获取谷歌m.group(1)
返回与(.*?)
对应的匹配部分。如果您想对此进行谷歌搜索,请搜索正则表达式捕获组(或阅读例如here。)【参考方案4】:
试试String.split()
String[] s = string.split("[0-9]+. ", String1);
将产生数组:
"Stack overflow ", "Google"
你可以从中获得任何你想要的字符串。为了更好,您可能想要trim()
拉出的字符串。
【讨论】:
String1 是您在问题中指定的内容。【参考方案5】:我不会做你的作业。你没有做出任何努力。看看这个简单的方法。在您的代码中实现它并对其进行修改,使其适合您的问题。
public boolean isInteger( String input )
try
Integer.parseInt( input );
return true;
catch( Exception )
return false;
【讨论】:
【参考方案6】:你可以用正则表达式来做到这一点:
Pattern p = Pattern.compile("\\d+\\. (\\D+)\\d");
Matcher m = p.matcher(str);
if (m.find())
System.out.println(m.group(1));
【讨论】:
或者一行:str.replaceAll("^.*?\\d+\\.", "").replaceAll(" \\d.*", "")【参考方案7】:匹配上面例子的正则表达式是
\d+\.\s(\D+)\d\.
为了您的方便而转义。
这将捕获数字(和点)之间的文本作为匹配组 1。
【讨论】:
以上是关于如何在Java中获取两个数字之间的字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何获取 Oracle 11g 中两个日期之间的天数? [复制]