如何获取字符串中的最后一个字母字符?

时间:2018-01-06 13:41:02

标签: javascript regex string

在这里,我想给每个角色一个空格,除了最后一个字母一个:

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;)时它就不起作用了。仅针对字母表。

4 个答案:

答案 0 :(得分:3)

您可以使用正则表达式首先删除所有非字母字符,然后执行拆分/连接组合以插入空格(或使用其他正则表达式):

&#13;
&#13;
var str = "don't test.";
var result = str.replace(/[^a-z]/gi, '').split('').join(' ');

console.log(result);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

"testasdf. asdf asdf asd.d?".replace(/./g,"$& ").replace(/([A-Za-z]) ([^A-Za-z]*)$/, '$1$2')

第一个替换为所有char添加空格

第二个替换删除了最后一个字母后面的空格

&#13;
&#13;
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;
&#13;
&#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(' ')将每个匹配分成字符,然后重新加入
  • 之间的空格