JavaScript中字符串中小写和大写字母之间的空格

JavaScript中字符串中小写和大写字母之间的空格,javascript,uppercase,lowercase,Javascript,Uppercase,Lowercase,我想在一个字符串中的小写和大写之间添加一个空格。例如: FruityLoops FirstRepeat 现在我想在小写字母和大写字母之间添加一个空格。我不知道应该如何开始使用JavaScript。是用substr还是搜索?有人能帮我吗 var str = "FruityLoops"; str = str.replace(/([a-z])([A-Z])/g, '$1 $2'); 示例:简单如下: "LoL".replace(/([a-z])([A-Z])/g, "$1 $2") 可能足够了

我想在一个字符串中的小写和大写之间添加一个空格。例如:

FruityLoops
FirstRepeat
现在我想在小写字母和大写字母之间添加一个空格。我不知道应该如何开始使用JavaScript。是用substr还是搜索?有人能帮我吗

var str = "FruityLoops";

str = str.replace(/([a-z])([A-Z])/g, '$1 $2');

示例:

简单如下:

"LoL".replace(/([a-z])([A-Z])/g, "$1 $2")

可能足够了;)

您可以通过手动搜索来完成,但使用正则表达式可能更容易。假设:

  • 你知道它是从一个大写字母开始的
  • 你不想在首都前面有个地方
  • 您希望在所有后续大写字母前面有一个空格
然后:

更高效的版本灵感来自(但不同于):


regexp选项看起来最好。不过,要正确使用regexp似乎很棘手

这里还有一个问题,需要尝试一些更复杂的选项:


@close voter:这到底是XSLT问题的重复吗@马特:被投赞成票又输了总比从未被投赞成票好o) @Frank,@patrick:请注意,这不会在相邻的大写字母之间添加空格,例如“FruityXLoops”=>“Fruity XLoops”,而不是“Fruity X Loops”。这是一个功能还是一个bug取决于你,弗兰克.:-)@帕特里克:嘿,现在,当你纠正你答案中的错误时,我重新投票了。@Matt:是的,我看到你重新投票了。控制台版本和JSFIDLE版本之间的转换很差。我的控制台版本工作正常,但更松散,然后在混合中的某个地方,我只抓取了部分修订。我想这就是为什么你一开始就把它拿走了,而且它是合适的。尤达?@T.J.克劳德:特写。总是一个特色;o) 实际上OP确实声明了“小写和大写之间的空格”。您链接到的大多数线程都是针对C#的,在JavaScript中不起作用。我能找到的唯一解决方案是处理相邻的大写字母+1,好先生,这是什么意思-/([a-z])?([a-z])/g,“$1$2”???寻找小写字母后跟大号的小词。小的是可选的。在第一组(小写字母)和第二组(大写字母)之间留一个空格?@stack1:不是单词,而是字符。除此之外,是的,非常正确。
function spacey(str) {  
    return str.substring(0, 1) +
           str.substring(1).replace(/[A-Z]/g, function(ch) {
        return " " + ch;
    });
}

alert(spacey("FruitLoops")); // "Fruit Loops"
function spacey(str) {  
    return str.substring(0, 1) +
           str.substring(1).replace(/([a-z])?([A-Z])/g, "$1 $2");
}

alert(spacey("FruityLoops"));  // "Fruity Loops"
alert(spacey("FruityXLoops")); // "Fruity X Loops"