javascript将空格转换为字符串中的符号

时间:2017-08-15 22:32:20

标签: javascript

如何将字母之间的空格转换为另一个字符,如“ - ”?

  

解决:

     

对于那些有同样问题的人:

var namePicked = names[Math.floor(Math.random() * names.length)];
var x = namePicked.replace(/[A-Za-z]/g, "_").replace(/\s/g, "-");
var y = x.split("").join(" ");
     

这将把John Smith(随机选择)转变为

     
    

_ _ _ _ - _ _ _ _ _

  
     

很好地用“空格”隔开,字母变成下划线和空格   变成破折号。这解决了“javascript”方式。你也可以   这有循环。

这是我的代码(之前)

// list of names
var names = ["John Smith", "Joe Doe", "Ian Nobody", "James Black"];
var namePicked = names[Math.floor(Math.random() * names.length)];
var nameArray = new Array(namePicked.length);

window.onload = function() {
    //convert chosen name to array and replace letters with dashes
    for (var i = 0; i < nameArray.length; i++) {
        nameArray[i] = "_";
    }
    //remove comma
    var nameHidden = nameArray.join(" ");
    document.getElementById("nameDisplay").innerHTML = nameHidden;
}

我只能将约翰史密斯变成10行下划线,我想在最后5 {{1}之前将underscores(名字)改为4 dash(对于空格) }} (姓)。每个underscores之间也是space。对不起,我之前没有提过这件事。 我试过这个:

underscore

还有其他一些变化但没有效果。

6 个答案:

答案 0 :(得分:2)

您可以链接replace()split()以使用下划线替换所有非空白字符,然后使用短划线替换名字和姓氏之间的空格。

&#13;
&#13;
var names = ["John Smith", "Joe Doe", "Ian Nobody", "James Black"];

var result = names.map(name => name.replace(/[^\s\\]/g, '_').split(' ').join('-'));
console.log(result);
&#13;
&#13;
&#13;

如果要将下划线分隔开,可以将另外两种方法链接到此:

  1. replace()每个带有下划线和空格的下划线
  2. slice() - 删除最后一个空格
  3. &#13;
    &#13;
    var names = ["John Smith", "Joe Doe", "Ian Nobody", "James Black"];
    
    var result = names.map(name => name.replace(/[^\s\\]/g, '_').split(' ').join('- ').replace(/[\_]/g, '_ ').slice(0, -1));
    console.log(result);
    &#13;
    &#13;
    &#13;

答案 1 :(得分:1)

试试这个

<script>
    var names = ["John Smith", "Joe Doe", "Ian Nobody", "James Black"];
    var namePicked = names[Math.floor(Math.random() * names.length)];


    window.onload = function () {
        var nameoutput = "";
        for (var i = 0; i < namePicked.length; i++) {
            if (namePicked[i] == " ") {
                nameoutput += " ";
            }
            else {
                nameoutput += "X";
            }
        }
        document.getElementById("nameDisplay").innerHTML = nameoutput;
    }
</script>

答案 2 :(得分:1)

您可以使用&#39; map&#39;方法。地图方法将按字面意思映射&#39;函数调用数组中的每个元素,因此需要使用方法split()从字符串创建数组。

&#13;
&#13;
var name = "John Smith";
var underscoredName = "";

name.split('').map(function(currentValue, index, nameString) {
  if (currentValue != " ") {
    underscoredName += "_";
  } else {
    underscoredName += "-";
  }
});

console.log(name); // John Smith
console.log(underscoredName); // ____-_____
&#13;
&#13;
&#13;

答案 3 :(得分:0)

  

如何将字母之间的空格转换为另一个字符,如&#34; - &#34;?

嗯,你知道你想要更换什么,你知道你想要用它替换它,现在你只需要使用替换:

var new_str = old_str.replace(/ /g, "-");

RegEx / /g表示&#34;每个空格&#34;

答案 4 :(得分:0)

您可以使用replace()方法将所有空格转换为任何其他字符:

var replaced = test.replace(/\s/g, '-');

请注意,您必须将replace的返回值分配给变量。

/\s/g正则表达式选择所有空格。

以下是您如何将其应用于您的情况的示例:

&#13;
&#13;
var names = ["John Smith", "Joe Doe", "Ian Nobody", "James Black"];

console.log('names before: ', names);

for (var i = 0; i < names.length; i++) {
  names[i] = names[i].replace(/\s/g, '-');
}

console.log('names after: ', names);
&#13;
&#13;
&#13;

答案 5 :(得分:0)

对于那些有同样问题的人:

var namePicked = names[Math.floor(Math.random() * names.length)];
var x = namePicked.replace(/[A-Za-z]/g, "_").replace(/\s/g, "-");
var y = x.split("").join(" ");

这将把John Smith(随机选择)转变为

  

_ _ _ _ - _ _ _ _ _

很好地用“空格”隔开,字母变成下划线,空格变成破折号。 这解决了“javascript”方式。您也可以使用loop for。

执行此操作