【问题标题】:jQuery/Javascript solution for replacing multiple abbreviationsjQuery/Javascript 替换多个缩写的解决方案
【发布时间】:2016-09-14 23:00:25
【问题描述】:

例如,我需要一些东西来解析一个字符串,然后用它们的完整单词替换多个街道类型的缩写(“Rd”会变成“Road”)。这有点像here 的回答,但我想要一个像下面这样的单个对象,因为这将是一个很长的列表,这将有助于保持正确的组织,

var streets = {
       'RD': 'ROAD',
       'ST': 'STREET',
       'PL': 'PLACE'};

我知道我以前见过这样的事情,但我有点不知道如何从这里开始。我知道我需要获取有问题的字符串并通过这个“过滤器”运行值(如果你可以这样称呼它),但我只是不确定如何,因为我对此还是很陌生。非常感谢

【问题讨论】:

    标签: javascript jquery string replace


    【解决方案1】:

    对于固定字符串,像这样使用.split().join()

    var streets = { 'RD': 'ROAD', 'ST': 'STREET', 'PL': 'PLACE'};
    var str = 'Some ST that is by the PL along the RD where the ST is by that PL.'
    
    for(k in streets){ str = str.split(k).join(streets[k]) }
    

    结果

    console.log(str)
    Some STREET that is by the PLACE along the ROAD where the STREET is by that PLACE.
    

    【讨论】:

      【解决方案2】:

      您只需要一个简单的 for/in 循环来遍历键并在字符串中替换它们,如下所示:

      var input = "something RD, other ST, some PL, another RD";
      var streets = {
        'RD': 'ROAD',
        'ST': 'STREET',
        'PL': 'PLACE'
      };
      
      for (var key in streets) {
        var re = new RegExp(key, 'gi');
        input = input.replace(re, streets[key]);
      }
      
      console.log(input);

      如果需要,您还可以更改正则表达式逻辑以使匹配更加准确;这将完全取决于您输入字符串的格式。

      【讨论】:

      • 非常感谢,我认为这肯定会奏效。您能否详细说明该循环如何处理故障,或者我应该提出一个新问题?
      • 没问题,很高兴为您提供帮助。该循环正在迭代streets 对象的属性。请参阅MDN 了解更多信息。
      • @RoryMcCrossan 如果键不是互斥的(一个是另一个的子字符串),这将产生问题。例如 - 如果 RDRDS 是键。
      • @gurvinder372 这是正确的,这就是为什么我注意到如果需要使正则表达式更准确。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      相关资源
      最近更新 更多