什麼是Java中的最好的方式找到排除某些字符的字符串的第一部分。有關信息,唯一的共同元素是第一個[。之後的數字,在下一個之前]具有可變長度。最好的方式找到一個字符串的第一部分排除某些字符
例輸入字符串:
john[43] was
Dave[0] had
Sally[241] used
需要的輸出字符串:
john
Dave
Sally
什麼是Java中的最好的方式找到排除某些字符的字符串的第一部分。有關信息,唯一的共同元素是第一個[。之後的數字,在下一個之前]具有可變長度。最好的方式找到一個字符串的第一部分排除某些字符
例輸入字符串:
john[43] was
Dave[0] had
Sally[241] used
需要的輸出字符串:
john
Dave
Sally
找到你的分隔符字符的索引,並採取從第0指數的子串到該索引。
String s = "John[1234]sadf";
System.out.println(s.substring(0, s.indexOf("[")));
謝謝,我試過上面的,但不得不在末尾加上+1(「[」)+1);我使用它的輸入由於某種原因不喜歡它。然後我現在刪除「[」: Name = Name.replaceAll(「\\ [」,「」); 我會繼續嘗試:) – BlazeUK
我可以看到您的輸入嗎? – Heisenberg
它來自聊天流,它可能是空的,導致它tbh。試着現在審查。 – BlazeUK
以下是這樣做的厚顏無恥的方式,然而拆分會返回一個數組。
String firstPart= inputString.split("[")[0];
另一種方法是使用子
int index = inputString.indexOf("[");
然後使用子與該指數創建前的所有字符串。
海森堡的答案涵蓋了indexOf方法,但是我會在這裏留下我的答案,因爲它確實包括拆分方法(授予它較差,但可能對未來的參考有用) – Chains
林假設它可能爲你john[43] was
之前有文字,也許像as soon as john[43] was
。
使用正則表達式,您可以創建一個字符串列表,將是這樣的:
List<String> allMatches = new ArrayList<String>();
Matcher m = Pattern.compile("([A-Za-z])*\[\d*\]")
.matcher(yourInputStringHere);
while (m.find()) {
allMatches.add(m.group());
}
這確保從輸入的開頭沒有選擇額外的字符或空格。
然後遍歷你可以做些事情,例如,
for (String s: allMatches){
System.out.println(s.substring(0, s.indexOf("[")));
}
所以你只需要在「[」之前的字符? – Heisenberg
只要繼續抓住角色,直到到達支架?目前還不清楚這裏有什麼困難。 –
正則表達式可以很容易地爲你做到這一點。 –