Java 如何获取字符串中括号([])之间的数字

Java 如何获取字符串中括号([])之间的数字,java,Java,我有一个类似的字符串: String msg=“[05][06][07][08][09][10][11][12][13][14][15][16]” 我需要得到一个数组中两个制动器之间的数字。有人能帮我吗?伪代码: String replace '[' with '' String replace ']' with '' String split at ' ' 伪代码: String replace '[' with '' String replace ']' with '' String sp

我有一个类似的字符串:

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

我需要得到一个数组中两个制动器之间的数字。有人能帮我吗?

伪代码:

String replace '[' with ''
String replace ']' with ''
String split at ' '
伪代码:

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

您还可以将字符串标记器用作:

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

您还可以将字符串标记器用作:

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

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

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

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

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

特别是,考虑减少问题:首先需要获取“括号中的位”,然后解析每个位(假设您想要
int
值)。对于第一步(隔离字符串的部分),您应该看看
string
类的一些方法,尤其是
split()
,考虑减少问题:首先需要获取“括号中的位”,然后解析每个位(假设您想要
int
值)。对于第一步(隔离字符串的部分),您应该看看
string
类的一些方法,特别是
split()
该伪代码与实际代码仅相差几个字符:d该伪代码与实际代码仅相差几个字符:d该正则表达式不会只得到括号之间的数字(它会得到任何数字,请小心操作)。@jsn如果其余输入与示例字符串相同,则无所谓。但是你是对的,我在答案中添加了一个原始代码的变体,以防括号很重要。这个正则表达式不会只得到括号之间的数字(它会得到任何数字,小心操作)。@jsn如果其余的输入与示例字符串相同,那就没关系了。但你是对的,我在答案中添加了一个原始代码的变体,以防括号很重要。