2011-07-24 51 views
0

下面我有一個sentancedesiredResultsentance。使用下面的pattern我可以阻止需要更改爲t, tt T,但我不知道要往哪裏走。通過javascript正則表達式修正句子結構

var sentence = "Over the candidate behaves the patent Then the doctor."; 
var desiredResult = "Over the candidate behaves the patent, then the doctor."; 
var pattern = /[a-z]\s[A-Z]/g; 

我比「我」,如果前面的字母是小寫以外的資金之前添加逗號和空格想要一個正確的句子。

+0

我們不太清楚應該用什麼樣的啓發式方法來檢測結構;否則你可以使用這樣的東西; '^。*?(專利\ sT)。*' – Olipro

+0

我更新了發佈。 – ThomasReggi

回答

3

在你的句子使用.replace(),並通過更換功能爲第二個參數

var corrected = sentence.replace(
    /([a-z])\s([A-Z])/g, 
    function(m,s1,s2){ //arguments: whole match (t T), subgroup1 (t), subgroup2 (T) 
     return s1+', '+s2.toLowerCase(); 
    } 
); 

至於爲維護大寫I,有很多種方法,其中之一:

var corrected = sentence.replace(
    /([a-z])\s([A-Z])(.)/g, 
    function(m,s1,s2,s3){ 
     return s1+((s2=='I' && /[^a-z]/i.test(s3))?(' '+s2):(', '+s2.toLowerCase()))+s3; 
    } 
); 

但也有更多的情況下,當它會失敗,如:His name is Joe.WTF is an acronym for What a Terrible Failure.和許多其他。

+0

我又增加了一個規定,「我」,我不想離開「我」一個人。有任何想法嗎? – ThomasReggi

+0

看我的編輯答案。 –