2012-05-31 50 views
1

我想使用正則表達式將camelCase名稱拆分爲單獨的名稱,以執行拼寫檢查。使用正則表達式來分割駱駝案例 - 使用Numbers

分割應該如下:

1)extendedStructureForNUB - >延伸,結構,因爲,NUB

2)extendedStructureFor2004 - >延伸,結構,因爲,2004

使用從下面的問題的答案,我能夠分裂的第一個條件。

問題RegEx to split camelCase or TitleCase (advanced)

但對於含有數(第二條件)的字符串,它不返回按格式。

extendedStrctureFor2004 --> extended, Structure, For2004 

請建議一種方式,我可以重用此正則表達式來拆分數字也。

+0

Hello2000WORLD - >你好,2000年,世界 –

+0

MYNewString - >我的新字符串 –

回答

3
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); 
    } 
} 
+0

錯字錯誤。檢查和工作!謝謝。刪除我的評論。 –

+0

你是對的...正在工作。 –

+0

固定。雖然這是很多回溯。 –

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

糾正一個

+0

這將返回[延伸,2,0,04,費用,結構]對於extended2004FeeStructure 。我需要的是[擴展,2004年,費用,結構] –

+0

更正的功能 –

+0

檢查和工作!謝謝。 +1 –

0

後您單獨此

extendedStrctureFor2004 - >擴展,結構,For2004

儲存於像一些陣列 「ARR」

使用這正則表達式

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

現在numMatch將包含ü希望的數字..

+0

這是關於Java,而不是JavaScript。 –

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] 
+0

這將適用於我的情況,但我不確定它會有多少性能高效。我需要將代碼庫中的所有變量名稱(可能容易包含數千或10萬個變量名稱)與拼寫檢查字典進行比較。 –