我想在[]中获取值。例如,这个字符串:
String str ="[D][C][B][A]Hello world!";
我想要一个包含DCBA项目的数组,我应该怎么做?
提前谢谢!
答案 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
答案 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));