我对此有点困惑,无法弄清楚如何重新插入非单词字符,即。 " - "和"!"。我使用正则表达式作为基于这些分隔符进行拆分的方法,但确实需要保留" - "的索引。和#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(" ");
}
答案 0 :(得分:1)
如果您使用pass a function to String.replace()的能力
,您的代码会更简单
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;