我有以下字符串:
Test: Testid #123123 - Updated
我想从这个字符串中找到子串123123
。
我试过了:<msg>.substring(15, 21);
它给了我正确的结果。
但是我希望找到这个子字符串,它应该在#和下一个空格之间找到id而不给出开始和结束索引。
感谢。
答案 0 :(得分:2)
试试这个:
s.substring(s.indexOf("#")+1, s.indexOf(" ", s.indexOf("#")+1))
这将为您提供在#
之后开始char的字符串,直到下一个空白。
答案 1 :(得分:2)
试试这个,
String text = "Test: Testid #123123 - Updated";
int startIndex = text.indexOf('#'); //Finds the first occurrence of '#'
int endIndex = text.indexOf(' ',startIndex); //Finds the first occurrence of space starting from position of #
String subString = text.substring(startIndex+1, endIndex);
System.out.println(subString);
或尝试使用正则表达式
答案 2 :(得分:1)
如果您的示例与您提供的示例一样简单,那么您将不需要使用regular expressions。但是,如果您的实际输入更复杂,那么正则表达式将比尝试以巧妙的方式拆分字符串更加繁琐。
import java.util.regex.*;
public class Foo{
public static void main(String[] args) {
String original = "Test: Testid #123123 - Updated";
Pattern mypattern = Pattern.compile("#([0-9]*) ");
Matcher matcher = mypattern.matcher(original);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}
}
答案 3 :(得分:0)
只需将其拆分为#然后将结果拆分 - 您将得到正确的结果。
答案 4 :(得分:0)
您是否尝试过int indexOf(int ch,int fromIndex)?您可以从给定索引中搜索下一个空格。
http://docs.oracle.com/javase/tutorial/java/data/manipstrings.html
答案 5 :(得分:0)
这可能会有所帮助..
String temp="Test: Testid #123123 - Updated";
int _first=temp.indexOf("#");
int _last= temp.indexOf(" ", _first);
String result=temp.substring(_first, _last);
答案 6 :(得分:0)
您可以使用以下代码获取&#39;#&#39;之间的值。和空间。
String str = "Test: Testid #123123 - Updated";
str = str.substring(str.indexOf('#')+1, str.indexOf(' ', str.indexOf("#")+1)+1);