正则表达式分隔符重新投入使用

时间:2017-10-26 19:15:32

标签: javascript regex

我对此有点困惑,无法弄清楚如何重新插入非单词字符,即。 " - "和"!"。我使用正则表达式作为基于这些分隔符进行拆分的方法,但确实需要保留" - "的索引。和#34;!"一旦我将它转换回数组中的字符串,重新引入。所需的输出是" e6t-r3s很有趣!"到目前为止,我得到: ' e6t r3s很有趣'

编写一个带字符串并转动所有"字的函数" (见下文)在长度为4或更大的字符串中,遵循相同规则的缩写。

abbreviate(" elephant-rides非常有趣!");

function abbreviate(string) {
    var array = string.split(/\W/); 
    var newArray = [];
    for (var i = 0; i < array.length; i++) {//iterates through each word
      var word = array[i];
      var abbrString = "";
      if (word.length >= 4) {
          //concat first index,count of indexes in between, last index
          var innerChar = word.substring(1, word.length - 1);
          var indCount = innerChar.length;
          var abbrWord = word.charAt(0) + indCount + word.charAt(word.length-1); 
          newArray.push(abbrWord);
        } else {
          newArray.push(word);
        }

    }
  return newArray.join(" ");
}

1 个答案:

答案 0 :(得分:1)

如果您使用pass a function to String.replace()的能力

,您的代码会更简单

&#13;
&#13;
function abbreviate(str) {
    return str.replace(/[a-z]{4,}/ig, function (word) {
        return word[0] + (word.length - 2) + word[word.length - 1];
    })
}

console.log(abbreviate("elephant-rides are really fun!"));
console.log(abbreviate("Accessibility"));
&#13;
&#13;
&#13;