2016-10-10 44 views
0

什么是Java中的最好的方式找到排除某些字符的字符串的第一部分。有关信息,唯一的共同元素是第一个[。之后的数字,在下一个之前]具有可变长度。最好的方式找到一个字符串的第一部分排除某些字符

例输入字符串:

john[43] was 
Dave[0] had 
Sally[241] used 

需要的输出字符串:

john 
Dave 
Sally 
+1

所以你只需要在“[”之前的字符? – Heisenberg

+1

只要继续抓住角色,直到到达支架?目前还不清楚这里有什么困难。 –

+0

正则表达式可以很容易地为你做到这一点。 –

回答

1

找到你的分隔符字符的索引,并采取从第0指数的子串到该索引。

String s = "John[1234]sadf"; 
System.out.println(s.substring(0, s.indexOf("["))); 
+0

谢谢,我试过上面的,但不得不在末尾加上+1(“[”)+1);我使用它的输入由于某种原因不喜欢它。然后我现在删除“[”: Name = Name.replaceAll(“\\ [”,“”); 我会继续尝试:) – BlazeUK

+0

我可以看到您的输入吗? – Heisenberg

+0

它来自聊天流,它可能是空的,导致它tbh。试着现在审查。 – BlazeUK

0

以下是这样做的厚颜无耻的方式,然而拆分会返回一个数组。

String firstPart= inputString.split("[")[0]; 

另一种方法是使用子

int index = inputString.indexOf("["); 

然后使用子与该指数创建前的所有字符串。

+0

海森堡的答案涵盖了indexOf方法,但是我会在这里留下我的答案,因为它确实包括拆分方法(授予它较差,但可能对未来的参考有用) – Chains

0

林假设它可能为你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()); 
} 
  • 约翰[43]
  • 戴夫[0]
  • 萨利[241]

这确保从输入的开头没有选择额外的字符或空格。

然后遍历你可以做些事情,例如,

for (String s: allMatches){ 
    System.out.println(s.substring(0, s.indexOf("["))); 
} 
相关问题