用连字符替换空格,但不用逗号代替空格



我遇到一种情况,我想用单-替换string,但我能够做到这一点,但问题是

var str = "Beco de    Santo António BT, Cascais , Portugal";  // input

输出

Beco-de-Santo-António-BT,-Cascais-,-Portugal  // output

但是你可以看到我得到, Cascais , Portugal==>,-Cascais-,-Portugal

我想要的输出:

Beco-de-Santo-António-BT,Cascais,Portugal

var str = "Beco de    Santo António BT, Cascais , Portugal";
str2 = str.replace(/s+/g, '-');
alert(str2);

使用单词边界来定位单词之间的空格。

var str = "Beco de    Santo António BT, Cascais , Portugal";
str2 = str.replace(/bs+b/g, '-');
alert(str2);

试试这个

var str = "Beco de    Santo António BT, Cascais , Portugal";
str2 = str.replace(/s+/g, '-').replace(/,-/g, ',').replace(/-,/g, ',');
alert(str2);

var str = "Beco de    Santo António BT, Cascais , Portugal";
str2 = str.replace(/ , /g, ', ');
str2 = str2.replace(/s+/g, '-');
str2 = str2.replace(/,-/g, ',');
alert(str2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

试试这个:

var str = "Beco de    Santo António BT, Cascais , Portugal";
array = str.split(",");
array = $.map(array, function(value){
return $.trim(value).replace(/ss+/g, '-').replace(/ /g, '-');
});
str = array.join(",");

这可以完成您的工作:

function showInput(){
var str = "Beco de    Santo António BT, Cascais , Portugal";
var res = str.split(",");
for (var i=0; i<res.length; i++){
res[i] = res[i].trim();
res[i] = res[i].replace(/s+/g, '-');
}
var output = res.join();
alert(output);
}

我正在做的是使用逗号拆分字符串并将它们放入数组中,然后遍历数组。 在每次迭代中,我都会删除前导和尾随空格,然后替换中间的剩余空格以替换为连字符(全部就地完成(,最后用逗号将它们连接在一起。

var str = "Beco de    Santo António BT, Cascais , Portugal";
str2 = str.replace(/ws+w/g, function(match, index){ return match.replace(/s+/g, '-') });
alert(str2);

首先删除,附近的多余空格,然后将字符串中的空格替换为-

str.replace(/s*,[,s]*/g,',') // first remove spaces nearby  commas
.replace(/s+/g,'-'); // then replace them by -

var str = "Beco de    Santo António BT, Cascais , Portugal";
str2 = str.replace(/s*,[,s]*/g,',').replace(/s+/g,'-');
console.log(str2);

最新更新