如何在字符串的每个字符之间添加空格?

10
我正在尝试创建一个函数,它在字符串参数的字符之间插入空格,然后返回一个新的字符串,其中包含与参数相同的字符,由空格字符分隔。
例如:
Hello

变成

H e l l o

我是一个超级新手,我知道对于一些人来说这可能看起来很简单,但我似乎无法理解。

4个回答

18
您可以使用 split() 函数将字符串转换为由单个字符组成的数组,然后使用 join() 函数将其转换回指定加入字符的字符串(在此处指定空格作为连接字符):
function insertSpaces(aString) {
  return aString.split("").join(" ");
}

请注意,split()函数的参数是您想要拆分的字符。例如,您可以使用split(",")来拆分逗号分隔的列表,但如果传递空字符串,则会拆分每个字符。


感谢您提供这个信息。我认为我理解了其原理。aString.split将每个字符分开,然后再用另一个空格将它们拼接回来。话虽如此...出于某种原因,当我尝试调用该函数时,它没有起作用...我并不完全确定我做错了什么。为了测试该函数,我使用以下代码:<INPUT TYPE = "button" NAME = "insertSpacesButton" VALUE ="Insert Spaces Between Characters" ONCLICK = "window.alert(insertSpaces(test));"> - Ross Cheeseright
啊,我得到答案了,只是告诉你而已。我没有在我的参数字符串周围包含 '' 插入空格('test')。 - Ross Cheeseright

2
function insertSpaces(aString)
{
  return aString.split('').join(' ');
}

2
很容易,只需要在字符串上调用replace方法,如下所示...
var str = "Hello";
console.info(str.replace(/\B/g, " ");

我在这里做的是替换非单词边界,而这个边界位于单词内部。这与"\b"表示的单词边界相反,该边界位于单词周围;可以将其想象为匹配单词的边缘。


1

除了使用分割和连接的解决方案外,另一种选择是:

'Hello'.replace(/(.(?!$))/g,'$1 '); //=> H e l l o
 //               ^all characters but the last
 //                          ^replace with found character + space

或者在一个函数中:

function insertChr(str,chr) {
  chr = chr || ' '; //=> default is space
  return str.replace(/(.(?!$))/g,'$1'+chr);
}
//usage
insertChr('Hello');     //=> H e l l o
insertChr('Hello','-'); //=> H-e-l-l-o

或者作为字符串原型函数:
String prototype.insertChr(chr){
  chr = chr || ' '; //=> default is space
  return this.replace(/(.(?!$))/g,'$1'+chr);
}
//usage
'Hello'.insertChr();    //=> H e l l o
'Hello'.insertChr('='); //=> H=e=l=l=o

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接