什么是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
只要继续抓住角色,直到到达支架?目前还不清楚这里有什么困难。 –
正则表达式可以很容易地为你做到这一点。 –