JS:用字符

时间:2018-03-24 12:49:25

标签: javascript regex str-replace

我试图找出如何用给定的字符替换所有空格。 当替换空格时,我的代码重复了字符。

这是练习,到目前为止我的代码:

此函数接收一个字符串。它还需要一个可选字符,当没有给出时,它应该默认为下划线(' _')。

它应该返回相同的字符串,但是所有的空格组(空格,制表符和换行符)都被第二个参数中的单个字符实例替换。

function replaceWhitespaceWithCharacter (str, character) {
  return str.replace(/\s/g, character);
}

另外,我不知道如何默认下划线。请问有人帮我一把吗? 提前谢谢。

7 个答案:

答案 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, '_');
       }
    }