2017-08-07 199 views
-5

我想要替换所有的空格,但不希望替换字符串末尾的空格。 例如我的问题:今天替换所有的空白,但除了空白末尾

是一个悲哀的日子

今天是-A-悲伤 - 日

str = "today is a sad day "; 
newstr = str.replace(/\s/g,"-"); 
+0

[?删除所有出现,除了最后](// stackoverflow.com/q/9694930) – Tushar

+1

使用修剪第一,删除空格。 –

+0

所以你想保留空白字符串结束? – Justinas

回答

1

试试这个代码trim();

str = "today is a sad day "; 
 
str = str.trim(); 
 
newstr = str.replace(/\s/g,"-"); 
 
alert(newstr);

3

您需要使用trim()从两个删除空白字符串的两面:

str = "today is a sad day "; 
 
console.log(str.trim().replace(/\s/g, "-"))

+0

只是一个警告,['String#trim()'](https://developer.mozilla。如果需要,org/en/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Browser_compatibility)在IE8中不可用。 – Phylogenesis

+0

'不希望替换字符串末尾的空白字符',所以我认为'trim'的做法相反 – Justinas

0

简单地split(" ")做字符串空间,然后join('-')

注意 *:对多余的空格删除trim()函数

console.log('today is a sad day '.trim().split(" ").join('-'))

+1

OP例子在'day'之后有一个空格,就像'今天是一个悲伤的日子' –

0
str = "today is a sad day "; 
newstr = str.replace(/\s(?!$)/g,"-"); 
+0

你最好解释一下你的解决方案,而不是简单的张贴一些代码。也许值得一读[如何写出一个好答案](https://stackoverflow.com/help/how-to-answer)。 –

0

也许你想做到这一点?

str = "today is a sad day "; 
 
toReplace = str.substring(0, str.length-1); 
 
newstr = toReplace.replace(/\s/g,"-"); 
 
replaced = newstr + " "; 
 
console.log(replaced);

0

随着String.prototype.replace()可以使用function (replacement)来创建新的子被用于替换匹配给定的正则表达式。提供给该功能的参数在“Specifying a function as a parameter”中描述。

比你可以使用字符串的长度和当前offset返回匹配或所需的替换'-'

代码:

var str = 'today is a sad day '; 
 
var result = str.replace(/\s/g, function(match, offset, string) { 
 
    return string.length - 1 !== offset ? '-' : match; 
 
}); 
 

 
console.log(result);