在Java中,我將如何獲得某個字符的子字符串,然後是數字?如何獲取某個字符的子字符串後跟一個數字?
的字符串看起來是這樣的:
To be, or not to be. (That is the question.) (243)
我想要的子串,直到(243),其中括號內的數字一直在變化我每次通話時間。
在Java中,我將如何獲得某個字符的子字符串,然後是數字?如何獲取某個字符的子字符串後跟一個數字?
的字符串看起來是這樣的:
To be, or not to be. (That is the question.) (243)
我想要的子串,直到(243),其中括號內的數字一直在變化我每次通話時間。
使用正則表達式:
newstr = str.replaceFirst("\(\d+\)", "");
這意味着找到一個字符串開頭(然後是任意數量的數字,然後是字符)。然後用空字符串「」替換子字符串。
我沒有意識到String類有內建的方法(在這種情況下稱爲replaceFirst),它可以識別正則表達式,這是我真正想要的答案。 – djangofan
我想你可能想要將正則表達式定位到行的末尾$如果字符串中恰好有加括號的數字,比如'有四(4)盞燈!(345)' – PurpleVermont
你可以將它與正則表達式匹配,並獲得正則表達式的索引。然後用它來獲取字符串中的索引。
這方面的一個例子是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
}
我會試試這個。謝謝,它看起來像答案。 – djangofan
您可以使用String.replaceAll()
:
String s = "To be, or not to be. (That is the question.) (243)";
String newString = s.replaceAll("\\(\\d+\\).*", "");
我覺得可以真正地做一些事情,如:
mystring.substring(0,mystring.lastIndexOf"("))
假設最後線上的東西就是括號中的數字。
我不確定你是否需要在''引號內或不是''中引用''你也可以將它指定爲'char'而不是一個字符串,這可能會更有效。 – PurpleVermont
你可以使用一個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;
}
使用正則表達式這可以解決。
public class RegExParser {
public String getTextPart(String s) {
String pattern = "^(\\D+)(\\s\\(\\d+\\))$";
String part = s.replaceAll(pattern, "$1");
return part;
}
}
簡單和性能很好。
在字符串的其他位置可以有數字嗎? – PurpleVermont
你的意思是正則表達式'\((\ d +)\)'? – chrylis