【问题标题】:How to extract uppercase substrings from a String in Java?如何从Java中的字符串中提取大写子字符串?
【发布时间】:2012-02-18 17:37:54
【问题描述】:

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

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

我需要提取CCBBBBBBBAAAA

【问题讨论】:

标签: java regex string substring extraction


【解决方案1】:

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

【讨论】:

  • 这也从混合大小写字符串中返回单个大写字符;
【解决方案2】:

这可能就是你要找的:

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

【讨论】:

    【解决方案3】:

    我认为你应该做一个替换所有正则表达式来将你不想要的字符变成分隔符,也许是这样的:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 字边界 - 你可以阅读更多关于它here
      • 实际上使用正则表达式的方式是 "\\b[^AZ]+\\b" 并且 "JOHN DOE is a name" 的输出是 JOHN DOE using string.split in Java
      【解决方案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]+ 部分是完成大部分工作的正则表达式。如果您想深入了解,这里有很多强大的正则表达式教程。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-23
        • 2022-08-19
        • 1970-01-01
        • 2012-12-06
        • 1970-01-01
        相关资源
        最近更新 更多