1

我想使用正则表达式将 camelCase 名称拆分为单个名称,以执行拼写检查。

拆分应如下所示:

1)extendedStructureForNUB --> 扩展,结构,For,NUB

2) extendedStructureFor2004 --> 扩展,结构,For,2004

使用以下问题的答案,我可以针对第一个条件进行拆分。

问题 RegEx 拆分 camelCase 或 TitleCase(高级)

但是对于包含数字的字符串(第二个条件),它不会按格式返回。

extendedStrctureFor2004 --> extended, Structure, For2004

请提出一种我可以重用此正则表达式来拆分数字的方法。

4

4 回答 4

4
public static void main(String[] args) 
{     
    for (String w : "camelValue".split("(?<!(^|[A-Z0-9]))(?=[A-Z0-9])|(?<!^)(?=[A-Z][a-z])")) {
         System.out.println(w);
    } 
}

编辑:更正 UPPER2000UPPER 的大小写,正则表达式变为:

public static void main(String[] args) 
{     
    for (String w : "camelValue".split("(?<!(^|[A-Z0-9]))(?=[A-Z0-9])|(?<!(^|[^A-Z]))(?=[0-9])|(?<!(^|[^0-9]))(?=[A-Za-z])|(?<!^)(?=[A-Z][a-z])")) {
         System.out.println(w);
    } 
}
于 2012-05-31T08:53:41.403 回答
1
public static void main(String[] args)
{
    for (String w : "extended2004FeeStructure".split("(?<!(^|[A-Z0-9]))(?=[A-Z0-9])|(?<!^)(?=[A-Z][a-z])")) {
        System.out.println(w);
    }
}

更正了一个

于 2012-05-31T08:49:08.177 回答
1

我看到的是您之前问题的答案几乎是不完美的。如果我知道你,我只会添加另一个拆分操作,但这次是在每个单词中间的第一个数字之前。

这是示例:

String data="2Hello2000WORLDHello2000WORLD";
//your previois split
String[] myFirstSplit=data.split("(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])");

//I will store split results in list (I don't know size of array)
List<String> list=new ArrayList<>();
for (String s:myFirstSplit){
    //if splited word contains digit after letter then split
    for (String tmp:s.split("(?<=[a-zA-Z])(?=[0-9])"))
        list.add(tmp);
}
System.out.println(list);
//out [2, Hello, 2000, WORLD, Hello, 2000, WORLD]
于 2012-05-31T09:31:26.527 回答
0

在你分开这个之后

extendedStrctureFor2004 --> 扩展,结构,For2004

将其存储在诸如“arr”之类的数组中

使用这个正则表达式

var numberPattern = /[0-9]+/g; var numMatch=arr[i].match(numberPattern);

现在 numMatch 将包含你想要的数字..

于 2012-05-31T08:53:13.327 回答