使用javascript正则表达式修复以下内容

时间:2012-03-22 11:21:32

标签: javascript regex

如何翻开此文字:

  

•潘基文呼吁立即停火•居民定居于此   al-Qusayr,目击者告诉HRWIsrael忽视不断扩大的暴力行为   定居者,欧盟报告上午9点18分:活动人士的镜头表明   反对派力量继续抵制政府军。这段录像......

进入本文:

  潘基文呼吁立即停火。居民定位于   证人告诉HRW,al-Qusayr。以色列无视扩大暴力   欧盟报告称,定居者。上午9点18分:来自积极分子的镜头表明   反对派力量继续抵制政府军。这个   进尺...

这需要使用javascript修复(可能有多个.replace命令)

  1. “•”必须删除并替换为“。”,但第一个“•”应该被删除
  2. 如果点“。”后面没有空格,则必须添加空格(。此素材)
  3. 如果时间(上午9点18分)之前没有空格,则必须添加空格
  4. 如果大写字母(HRWIsrael)之前没有空格 然后是非大写字母,然后必须在前面添加点和空格“。” 那封非大写字母。

1 个答案:

答案 0 :(得分:1)

分解为几个replace语句(如下所列)是我的方式(working fiddle)。

fixBullets函数会将所有项目符号转换为HTML实体,fixBulletEntities修复这些项目。我这样做是为了规范化项目符号,因为我不确定它们是否只是源字符串中的项目符号或HTML实体。

fixTimes功能将“9.18am:”更改为“上午9:18”。(否则,fixPeriods功能使其看起来像“上午9点18分”,我相信您不想要

关于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;
}