2012-03-22 27 views
-1

如何打開這樣的文字:使用JavaScript正則表達式來解決以下

•潘基文呼籲立即停火•居民 古賽爾針對性,目擊者告訴HRWIsrael無視 定居者擴大暴力歐盟reports9.18am:影片從活動家認爲, 反對派武裝繼續抵抗政府troops.This鏡頭...

到這樣的文字:

潘基文要求立即停火。目擊者在 al-Qusayr,目擊者告訴HRW。歐盟報告稱,以色列忽視了定居者的擴大暴力。上午9點18分:來自維權人士的視頻暗示,反對勢力繼續抵抗政府軍。這 鏡頭...

這需要固定的JavaScript(多.replace命令是可能的)

  1. 「•」必須由一個「」,但在拆除和更換第一個「•」應該被刪除
  2. 如果點「。」後沒有空格,則必須添加一個空格(。此素材)
  3. 如果在時間之前沒有空間(上午9.18am)必須添加空格
  4. 如果有在大寫字母(HRWIsrael)之前沒有空格,即 後跟非大寫字母,然後是點和空格「。 「必須以非大寫字母的前 添加。
+0

你downvoted我嗎?我不是一個正則表達式親,所以我一當涉及到這些事情時,它有點無知。或許你可以幫助 – 2012-03-22 11:29:15

回答

1

分解成幾個replace語句(如以下所列)是這樣的我會去了解它(working fiddle)。

fixBullets功能將關閉所有的子彈成HTML實體和fixBulletEntities修復的。我這樣做是因爲我不知道,如果他們是你的源字符串中只是符號字符或HTML實體正常化子彈。

fixTimes功能改變「上午09點18分:「進入」9:18上午。 「(否則,fixPeriods函數使它看起來像」9. 18am「,我確信你不想要。

關於fixCapitalsEndSentence函數的一個主要警告......這也將字符串轉換爲」WORDS「 WO。的RDS」這可能不是你想要的。

至少,這應該讓你開始...

function fixBullets(text) { 
    var bullets = /•/g; 
    return text.replace(bullets, '•'); 
} 

function fixBulletEntities(text) { 
    var bulletEntities = /•/ig; 
    text = text.replace(bulletEntities, '. '); 
    if (text.indexOf('. ') === 0) { 
     text = text.substring(2); 
    } 
    return text; 
} 

function fixTimes(text) { 
    var times = /(\d+)[\.:](\d+[ap]m):?/ig; 
    return text.replace(times, ' $1:$2. '); 
} 

function fixPeriods(text) { 
    var periods = /[.](\w+)/g; 
    return text.replace(periods, '. $1'); 
} 

function fixCapitalsEndSentence(text) { 
    var capitalsEndSentence = /([A-Z]{2,})([a-z]+)/g; 
    text = text.replace(capitalsEndSentence, function(match1, match2, match3) { 
     var len = match2.length - 1; 
     var newText = match2.substring(0, len) + '. ' + match2.substring(len, len + 1) + match2.substring(len + 1) + match3; 
     return newText; 
    }); 
    return text; 
} 

function fixMultipleSpaces(text) { 
    var multipleSpaces = /\s+/g; 
    return text.replace(multipleSpaces, ' '); 
} 

function fixAll(text) { 
    text = fixBullets(text); 
    text = fixBulletEntities(text); 
    text = fixTimes(text); 
    text = fixPeriods(text); 
    text = fixCapitalsEndSentence(text); 
    text = fixMultipleSpaces(text); 
    return text; 
} 
+0

謝謝你的出色答案 – 2012-03-22 16:19:16

相關問題