2012-03-22 28 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

相关问题