2014-09-10 42 views
0

如何获得括号([])之间的数字我有这样一个字符串:在一个字符串

String msg = "[05] [06] [07] [08] [09] [10] [11] [12] [13] [14] [15] [16]";

,我需要得到brakets之间的数字在数组中。谁能帮我?

+4

你做了什么? – Thomas 2014-09-10 13:03:25

+4

特别是,考虑减少这个问题:首先需要获取“括号内的位”,然后解析每一个(假设你需要'int'值)。 – 2014-09-10 13:03:52

+0

对于第一步(隔离字符串的一部分),您应该看看'String'类的一些方法,特别是'split()' – Joffrey 2014-09-10 13:05:46

回答

4

伪代码:

String replace '[' with '' 
String replace ']' with '' 
String split at ' ' 
+0

该伪代码只与实际代码相距一些字符:D – Joffrey 2014-09-10 13:06:39

0

你也可以使用字符串标记为:

String msg = "[05] [06] [07] [08] [09] [10] [11] [12] [13] [14] [15] [16]"; 
StringTokenizer st = new StringTokenizer(msg, "[,], "); 

while(st.hasMoreTokens()){ 
    System.out.println("Token: "+ st.nextToken()); 
} 

输出:

Token: 05 
Token: 06 
Token: 07 
Token: 08 
Token: 09 
Token: 10 
Token: 11 
Token: 12 
Token: 13 
Token: 14 
Token: 15 
Token: 16 
1

您可以使用一个简单的正则表达式查找所有的数字:

String msg = "[05] [06] [07] [08] [09] [10] [11] [12] [13] [14] [15] [16]"; 
Matcher matcher = Pattern.compile("[0-9]+").matcher(msg); 
while (matcher.find()) { 
     System.out.println(matcher.group()); 
} 

如果它来解析数字括号,而不是所有的数字串中之间是很重要的,那么你可以使用这个变体:

String msg = "[05] [06] [07] [08] [09] [10] [11] [12] [13] [14] [15] [16]"; 
Matcher m = Pattern.compile("\\[([0-9]+)\\]").matcher(msg); 
while (m.find()) { 
    System.out.println(m.group(1)); 
} 

在这两种情况下,输出是一样的:

05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
15 
16 
+0

这个正则表达式不会得到括号内的数字(它会得到任何,小心OP)。 – jn1kk 2014-09-10 13:57:27

+0

@jsn如果输入的其余部分与示例字符串相同,则无关紧要。但是你是对的,我已经将原始代码的一个变体添加到答案中,以防括号很重要。 – Malt 2014-09-10 14:13:29