在括号Java中获取字符串

时间:2014-05-25 10:45:50

标签: java

我想在[]中获取值。例如,这个字符串:

 String str ="[D][C][B][A]Hello world!";

我想要一个包含DCBA项目的数组,我应该怎么做?

提前谢谢!

2 个答案:

答案 0 :(得分:1)

如果[]中只有一个字符,请尝试使用正则表达式。

  • 此处Matcher#group()用于对括号()内找到的任何匹配进行分组。

  • 这里使用转义字符\来转义已经是正则表达式模式本身一部分的[和]。

示例代码:

String str = "[D][C][B][A]Hello world!";

List<Character> list = new ArrayList<Character>();
Pattern p = Pattern.compile("\\[(.)\\]");
Matcher m = p.matcher(str);
while (m.find()) {
    list.add(m.group(1).charAt(0));
}

Character[] array = list.toArray(new Character[list.size()]);
System.out.println(Arrays.toString(array));

如果[]

中有多个字符,请尝试使用此字符
String str = "[DD][C][B][A]Hello world!";

List<String> list = new ArrayList<String>();
Pattern p = Pattern.compile("\\[(\\w*)\\]");
Matcher m = p.matcher(str);
while (m.find()) {
    list.add(m.group(1));
}

String[] array = list.toArray(new String[list.size()]);
System.out.println(Arrays.toString(array));

模式描述

\w      A word character: [a-zA-Z_0-9]
.       Any character (may or may not match line terminators)
X*      X, zero or more times

详细了解JAVA Regex Pattern

答案 1 :(得分:0)

此代码很简单

  String str ="[D][C][B][A]Hello world!";
  String[] s =  str.split("\\[");
  StringBuilder b = new StringBuilder();
  for (String o: s) {
    if (o.length() > 0){
      String[] s2 =  o.split("\\]");
      b.append(s2[0]);
    }
  }
  char[] c = b.toString().toCharArray();
  System.out.println(new String(c));