在这里,我想给每个角色一个空格,除了最后一个字母一个:
var str = "test"
var result = "";
for (var i = 0; i < str.length; i++) {
result += (/*condition*/) ? str[i]
: str[i] + " ";
}
console.log(result);
所以它打印出来&#34; t&#34;。
我尝试了这个(i === str.length - 1)
,但是当一个字符串有句号(。)作为它的最后一个字符(&#34; test。&#34;)时它就不起作用了。仅针对字母表。
答案 0 :(得分:3)
您可以使用正则表达式首先删除所有非字母字符,然后执行拆分/连接组合以插入空格(或使用其他正则表达式):
var str = "don't test.";
var result = str.replace(/[^a-z]/gi, '').split('').join(' ');
console.log(result);
&#13;
答案 1 :(得分:1)
"testasdf. asdf asdf asd.d?".replace(/./g,"$& ").replace(/([A-Za-z]) ([^A-Za-z]*)$/, '$1$2')
第一个替换为所有char添加空格
第二个替换删除了最后一个字母后面的空格
console.log("testasdf?".replace(/./g,"$& ").replace(/([A-Za-z]) ([^A-Za-z]*)$/, '$1$2'));
console.log("Super test ! Yes".replace(/./g,"$& ").replace(/([A-Za-z]) ([^A-Za-z]*)$/, '$1$2'));
&#13;
答案 2 :(得分:1)
有一个像先行断言这样的功能。 所以它可能是
str.replace(/(\w)(?=.*\w)/, "$1")
答案 3 :(得分:0)
使用正则表达式替换功能,您可以将所有字符分隔开来:
"test string, with several words.".replace(/\w{2,}/g, match => match.split('').join(' '))
解释
\w{2,}
匹配2个或更多字母字符match.split('').join(' ')
将每个匹配分成字符,然后重新加入