用其他单词替换单词列表

时间:2014-03-09 18:19:46

标签: javascript regex

我有下面的单词列表,我希望用另一个单词替换,并希望它不区分大小写。

例如,101 North First Avenue.应该变为101 n 1st ave

这是如何最好地完成的?

var o={
    'first':'1st',
    'second':'2nd',
    'third':'3rd',
    'forth':'4th',
    'fifth':'5th',
    'sixth':'6th',
    'seventh':'7th',
    'eighth':'8th',
    'nineth':'9th',
    'tenth':'10th',
    'north':'n',
    'south':'s',
    'east':'e',
    'west':'w',
    'avenue':'ave',
    'street':'st',
    'place':'pl',
    '  ':' ',
    ',':'',
    '.':''
}

3 个答案:

答案 0 :(得分:2)

"101 North First   Avenue.".split(" ").map(function(key) {
    return o[key.toLowerCase().replace(/\.|\,/g,"")] || key
}).join(" ");

会回来: “101 n 1st ave”

答案 1 :(得分:0)

 var Str;   
 function replace(Str)
    {
      for(var i=0;i<o.length,i++)
      {
         var key = o[i].key
          str= str.replace(key,o[i].key );
      }
      return Str;
    }

答案 2 :(得分:0)

这样的事情可行:

function replacer(str) {
    var pairs = {
            'first': '1st',
            'second': '2nd',
            'third': '3rd',
            'forth': '4th',
            'fifth': '5th',
            'sixth': '6th',
            'seventh': '7th',
            'eighth': '8th',
            'nineth': '9th',
            'tenth': '10th',
            'north': 'n',
            'south': 's',
            'east': 'e',
            'west': 'w',
            'avenue': 'ave',
            'street': 'st',
            'place': 'pl',
            '  ': ' ',
            ',': '',
            '.': ''
    };
    Object.keys(pairs).forEach(function (key) {
        str = str.split(key).join(pairs[key]).split(switchCase(key)).join(pairs[key]);
    });
    return str;
}

function switchCase(word) {
    if (word[0].toUpperCase() == word[0]) {
        return word[0].toLowerCase() + word.slice(1);
    } else {
        return word[0].toUpperCase() + word.slice(1);
    }
};

DEMO