如何从Java中的String中提取大写子串?

时间:2012-01-25 14:32:10

标签: java regex string substring extraction

我需要一段代码,用它可以从Java中的字符串中提取大写的子字符串。 例如:

"a:[AAAA|0.1;BBBBBBB|-1.90824;CC|0.0]"

我需要提取CC BBBBBBBAAAA

5 个答案:

答案 0 :(得分:6)

您可以使用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

答案 1 :(得分:5)

这应该证明正确的语法和方法。有关详情,请访问http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.htmlhttp://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Matcher.html

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]+部分是执行大部分工作的正则表达式。如果你想更多地了解它,有许多强大的正则表达式教程。

答案 2 :(得分:0)

如果你只想提取所有大写字母使用[A-Z]+,如果你只想要大写的子字符串,这意味着如果你有小写字母,你不需要它(HELLO是可以的,但{ {1}}不是)然后使用Hello

答案 3 :(得分:0)

我认为您应该替换所有正则表达式,将您不想要的字符转换为分隔符,可能是这样的:

  1. str.replaceAll(“[^ A-Z] +”,“”)
  2. 修剪任何前导或尾随空格。
  3. 然后,如果您愿意,可以调用str.split(“”)

答案 4 :(得分:0)

这可能就是你要找的东西:

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()));
       }
    }
}