在Java中,我如何获得某个字符后跟数字的子字符串?
字符串如下所示:
To be, or not to be. (That is the question.) (243)
我希望子串直到(243),每次调用时括号内的数字总是在变化。
答案 0 :(得分:2)
使用正则表达式:
newstr = str.replaceFirst("\(\d+\)", "");
这意味着找到以(,然后是任意数量的数字,然后是字符)开头的子字符串。然后用空字符串“”替换子字符串。
答案 1 :(得分:0)
您可以将其与正则表达式匹配,并获取正则表达式的索引。然后使用它来获取字符串中的索引。
一个例子是Can Java String.indexOf() handle a regular expression as a parameter?
Pattern pattern = Pattern.compile(patternStr);
Matcher matcher = pattern.matcher(inputStr);
if(matcher.find()){
System.out.println(matcher.start());//this will give you index
}
答案 2 :(得分:0)
您可以使用String.replaceAll()
:
String s = "To be, or not to be. (That is the question.) (243)";
String newString = s.replaceAll("\\(\\d+\\).*", "");
答案 3 :(得分:0)
我认为你实际上可以做类似的事情:
mystring.substring(0,mystring.lastIndexOf"("))
假设该行的最后一件事是括号中的数字。
答案 4 :(得分:0)
您可以使用for循环并将数字前面的字符添加到单独的字符串
String sentence = "To be, or not to be. (That is the question.) (243)";
public static void main(String[] args) {
String subSentence = getSubsentence(sentence);
}
public String getSubsentence(String sentence) {
String subSentence = "";
boolean checkForNum = false;
for (int i = 0; i < sentence.length(); i++) {
if (checkForNum) {
if (isInteger(sentence.getSubstring(i, i+1))) return subSentence;
checkForNum = false;
} else {
if (sentence.getSubstring(i, i+1).equals("(")) checkForNum = true;
else subSentence += sentence.getSubstring(i, i+1);
}
}
return subSentence;
}
public boolean isInteger(String s) {
try {
Integer.parseInt(s);
} catch(NumberFormatException e) {
return false;
}
return true;
}
答案 5 :(得分:0)
使用正则表达式可以用。
解决public class RegExParser {
public String getTextPart(String s) {
String pattern = "^(\\D+)(\\s\\(\\d+\\))$";
String part = s.replaceAll(pattern, "$1");
return part;
}
}
简单且性能良好。