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

Posted

技术标签:

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

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

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

我需要提取CCBBBBBBBAAAA

【问题讨论】:

这是regular expressions的工作。 【参考方案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】:

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

    str.replaceAll("[^A-Z]+", "") 修剪任何前导或尾随空格。 然后,如果你愿意,你可以调用 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.html和http://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]+ 部分是完成大部分工作的正则表达式。如果您想深入了解,这里有很多强大的正则表达式教程。

【讨论】:

以上是关于如何从Java中的字符串中提取大写子字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PostgreSql 中的子字符串函数从字符串中提取单词

如何从PHP中的字符串中提取子字符串直到它到达某个字符?

java 从一个URL中提取特定子字符串保存

在python中,如何通过匹配原始列表中的字符串模式从字符串列表中提取子列表

如何从 C++ 中的 getline 函数中提取特定的子字符串?

使用正则表达式从 Ruby 中的字符串中提取子字符串