在JavaScript中进行四次字符串操作

时间:2016-10-06 19:00:26

标签: javascript regex string replace

我需要使用这些规则来操作字符串:

  1. 用一个空格替换多个空格
  2. 删除点前面的空格
  3. 应删除两个单个(!)字符和点之间的空格:i. e. - > i.e.
  4. 删除前导和尾随空格
  5. 所以这就是我提出来的:

    string = string.replace(/\s\s+/g, ' ');
    string = string.replace(/\s\./, '.');
    // ??
    string = string.replace(/\.+$/, '');
    

    我不知道如何处理规则3,也许所有事情都可以合并在一起。

2 个答案:

答案 0 :(得分:0)

您可以将其合并到:

string = string.replace(/\s{2,}/g, ' ').replace(/\s+\./g, '.').
                replace(/([!.])\s+([a-z])\b/ig, '$1$2').replace(/^\s+|\s+$/g, '');
  • 而不是\s\s+更好地使用\s{2,}
  • ([!.])\s+([a-z]\b将删除DOT后的空格或!,如果后跟单个字母。
  • ^\s+|\s+$将删除前导或尾随空格

答案 1 :(得分:0)

const regex = /(\w\.)\s(\w\.\s)/g;
const str = 'i. e. ';
const subst = '\$1\$2';

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

<强>实施例

Input: "i. e. "
Output: "i.e "
Input: "a. g."
Output "a.g. "

这背后的逻辑很简单。 \ w匹配[a-zA-Z0-9]字符,。匹配一个。字面上\ s匹配一个空格(我相信你知道)序列是如此严格(1个字符,1个点,1个空格,后跟1个字符和1个点)使得更容易制作和调整捕获组。