我需要一段Java代码,能够从字符串中提取出所有大写字母组成的子字符串。 例如:
"a:[AAAA|0.1;BBBBBBB|-1.90824;CC|0.0]"
我需要提取 CC
、BBBBBBB
和 AAAA
String[] split(String regex)
来实现。唯一可能的问题是空字符串,但很容易将它们过滤掉。String str = "a:[AAAA|0.1;BBBBBBB|-1.90824;CC|0.0]";
String[] substrings = str.split("[^A-Z]+");
for (String s : substrings)
{
if (!s.isEmpty())
{
System.out.println(s);
}
}
输出:
AAAA
BBBBBBB
CC
String myStr = "a:[AAAA|0.1;BBBBBBB|-1.90824;CC|0.0]";
Pattern upperCase = Pattern.compile("[A-Z]+");
Matcher matcher = upperCase.matcher(myStr);
List<String> results = new ArrayList<String>();
while (matcher.find()) {
results.add(matcher.group());
}
for (String s : results) {
System.out.println(s);
}
[A-Z]+
部分是正则表达式,它承担了大部分的工作。如果您想更深入了解,请查阅许多优秀的正则表达式教程。
这可能是你正在寻找的内容:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class MatcherDemo {
private static final String REGEX = "[A-Z]+";
private static final String INPUT = "a:[AAAA|0.1;BBBBBBB|-1.90824;CC|0.0]";
public static void main(String[] args) {
Pattern p = Pattern.compile(REGEX);
// get a matcher object
Matcher m = p.matcher(INPUT);
List<String> sequences = new Vector<String>();
while(m.find()) {
sequences.add(INPUT.substring(m.start(), m.end()));
}
}
}
[A-Z]+
,如果您只想要大写子字符串,也就是说,如果您有小写字母,则不需要它(HELLO
可以,但Hello
不行),那么请使用\b[A-Z]+\b
。我认为你应该使用替换所有正则表达式,将你不想要的字符转换成分隔符,可能像这样: