我有一个很长的字符串,如:
“[text1] [text2] [text3] [text4] [Text5]%& /!”
如何将仅封装在[]中的子串插入到arrayList中。所以外面的符号就像%& /!不会插入?
答案 0 :(得分:2)
使用正则表达式 - 这应该适合你:
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexSquareBrackets{
public static void main(String[] args) {
String input = "[text1] [text2] [text3] [text4] [Text5] % & / !";
Pattern pattern = Pattern.compile("\\[(.*?)\\]");
Matcher matcher = pattern.matcher(input);
ArrayList<String> output = new ArrayList<String>();
while (matcher.find())
output.add(matcher.group(1));
//Print the items out
System.out.println("Found Text: " + output);
}
}
然后您将拥有以下项目:&#34; text1&#34;,&#34; text2&#34;,&#34; text3&#34;,&#34; text4&#34;,&#34; Text5&#34;在您的ArrayList输出中。
答案 1 :(得分:0)
您可以使用正则表达式来执行此操作:
\[(\w+)\]
所以,你可以得到这样的代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexMatches
{
public static void main( String args[] ){
// String to be scanned to find the pattern.
String line = "[text1] [text2] [text3] [text4] [Text5] % & / !";
Pattern r = Pattern.compile("\\[(\\w+)\\]");
List<String> tagList = new ArrayList<String>();
// Now create matcher object.
Matcher m = r.matcher(line);
while (m.find()) {
tagList.add(m.group(1));
}
System.out.println("Found tags: " + Arrays.toString(tagList.toArray()));
//Output:
//Found tags: [text1, text2, text3, text4, Text5]
}
}