我试图找出如何用给定的字符替换所有空格。 当替换空格时,我的代码重复了字符。
这是练习,到目前为止我的代码:
此函数接收一个字符串。它还需要一个可选字符,当没有给出时,它应该默认为下划线(' _')。
它应该返回相同的字符串,但是所有的空格组(空格,制表符和换行符)都被第二个参数中的单个字符实例替换。
function replaceWhitespaceWithCharacter (str, character) {
return str.replace(/\s/g, character);
}
另外,我不知道如何默认下划线。请问有人帮我一把吗? 提前谢谢。
答案 0 :(得分:4)
/\s/g
匹配空白的一个字符(重复)。要匹配行中空格的一个或更多字符,请在+
之后使用\s
:/\s+/g
。
function replaceWhitespaceWithCharacter (str, character) {
return str.replace(/\s+/g, character);
}
另外,我不知道如何默认下划线
在ES2015之前,你会做这样的事情:
function replaceWhitespaceWithCharacter (str, character) {
character = character || "_";
return str.replace(/\s+/g, character);
}
...因为如果没有给出character
undefined
,那就是假的。或者如果你想允许""
(这也是假的),那么:
function replaceWhitespaceWithCharacter (str, character) {
character = typeof character === "undefined" ? "_" : character;
return str.replace(/\s+/g, character);
}
从ES2015开始,您可以使用默认参数值:
function replaceWhitespaceWithCharacter (str, character = "_") {
return str.replace(/\s+/g, character);
}
答案 1 :(得分:1)
要包含多个空格,您应添加+
,例如:/\s+/g
所以你的代码应该是:
function replaceWhitespaceWithCharacter (str, character) {
return str.replace(/\s+/g, character);
}
答案 2 :(得分:1)
在正则表达式中one or more
匹配。所以/\s+/
表示空白至少一个最大值。然后我正在检查是否使用三元运算符定义了character
。如果不是那么我正在分配_
。
function replaceWhitespaceWithCharacter (str, character) {
return str.replace(/\s+/g, character?character: '_');
}
答案 3 :(得分:1)
默认为'_',插入:
var chr = (typeof chr !== 'undefined') ? chr : '_';
用组中的一个或多个元素替换空格组(但不是零):
return str.replace(/\s+/g, chr);
所以我们最终得到:
function replaceWhitespaceWithCharacter (str, chr) {
var chr = (typeof chr !== 'undefined') ? chr : '_';
return str.replace(/\s+/g, chr);
}
答案 4 :(得分:0)
您还可以使用以下方法扩展字符串对象:
String.prototype.replaceWhitespaceWithCharacter = function replaceWhitespaceWithCharacter(theCharacter)
{
if ((typeof theCharacter !== 'string') || (theCharacter === ''))
{
theCharacter = '_';
}
return this.replace(/\s+/g, theCharacter);
}
我根据字符串的typeof检查字符,或者如果theCharacter是空字符串
答案 5 :(得分:-1)
var str = "this is a\ttest\n2";
var str2 = str.replace(/\s+/g,'_');
console.log(str2);
这是用一个下划线替换所有空格。
答案 6 :(得分:-2)
这是我的最终解决方案。谢谢你的帮助。
function replaceWhitespaceWithCharacter (str, character) {
if(character){
return str.replace(/\s+/g, character);
}else{
return str.replace(/\s+/g, '_');
}
}