如何在Java中获取两个数字之间的字符串?
可能重复:如何在Java中获取两个数字之间的字符串?,java,string,Java,String,可能重复: 假设我有一个以下格式的字符串: string1 = "1. Stack Overflow 2. Google 3. Reddit" 如何识别数字之间的子字符串?循环检查字符串的每个字符,然后查看其编号是否标记开始索引,最后标记结束索引并执行子字符串 *使用方法* 您可以使用正则表达式和捕获组: String str = "1. Stack overflow 2. Google"; Matcher m = Pattern.compile("\\d\\. (.*?) \\d"
假设我有一个以下格式的字符串:
string1 = "1. Stack Overflow 2. Google 3. Reddit"
如何识别数字之间的子字符串?循环检查
字符串的每个字符
,然后查看其编号是否标记开始索引,最后标记结束索引并执行子字符串
*使用方法*
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"
匹配上述示例的正则表达式如下
\d+\.\s(\D+)\d\.
为了你的方便逃跑了
这将捕获数字(和点)之间的文本作为匹配组1。您可以使用正则表达式执行此操作:
Pattern p = Pattern.compile("\\d+\\. (\\D+)\\d");
Matcher m = p.matcher(str);
if (m.find())
System.out.println(m.group(1));
我不打算给你做家庭作业。你没有努力。看看这个简单的方法。在您的代码中实现它,并对其进行修改,使其适合您的问题
public boolean isInteger( String input )
{
try
{
Integer.parseInt( input );
return true;
}
catch( Exception )
{
return false;
}
}
尝试String.split()
将生成阵列:
{"Stack overflow ", "Google"}
你可以从中选择你想要的任何字符串。为了更加美观,您可能需要
trim()
拉出的字符串。字符串拆分函数在这里也可以正常工作:
String test = "1. Stack overflow 2. Google";
String[] test2 = test.split("\\d\\.");
将是test2[0]
“堆栈溢出”
将成为test2[1]
“谷歌”
您可以使用
test2[0].trim()
来消除多余的空格。-1表示完全不努力。@MattBall我支持这一点。有些人不知道寻求帮助的正确方式有些人对此持敌对态度。这两种方法都同样无知。我们不是代码工厂。我在这个答案中给出了不止一个代码:)或者在一行中:str.replaceAll(“^.*.\\d+\\.”,“”)。m.group(1)中的replaceAll(“\\d.*”,“”)这里的“1”是什么意思?如何获取googlem.group(1)
返回与(.*)
对应的匹配部分。如果你想在谷歌上搜索,搜索正则表达式捕获组(例如,或者读取)。String1是你在问题中指定的。
String test = "1. Stack overflow 2. Google";
String[] test2 = test.split("\\d\\.");