【问题标题】:Space between lowercase and uppercase letters in a string in JavaScriptJavaScript中字符串中小写字母和大写字母之间的空格
【发布时间】:2011-06-16 17:32:16
【问题描述】:

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

FruityLoops
FirstRepeat

现在我想在小写字母和大写字母之间添加一个空格。我不知道我应该如何开始使用 JavaScript。与 substr 或搜索有关的东西?有人可以帮助我吗?

【问题讨论】:

  • @close voter:这究竟是一个 XSLT 问题的副本?!

标签: javascript uppercase lowercase


【解决方案1】:
var str = "FruityLoops";

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

示例: http://jsfiddle.net/3LYA8/

【讨论】:

  • @Matt:被投票和输掉总比从未投票要好。 :o)
  • @Frank, @patrick:请注意,这不会在相邻大写字母之间添加空格,例如“FruityXLoops” => “Fruity XLoops”,而不是“Fruity X Loops”。弗兰克,这是一个功能还是一个错误取决于你。 :-)
  • @patrick:嘿,现在,当您纠正答案中的错误时,我重新投票了。
  • @Matt:是的,我看到你重新投票了。控制台版本和 jsFiddle 版本之间的转换很糟糕。我的控制台版本有效,但更宽松,然后在混音的某个地方我只抓住了部分修订版。我想这就是你一开始删除它的原因,而且它是合适的。尤达?
  • @T.J.克劳德:特征。 始终是一项功能。 ;o) 实际上 OP 确实声明 “小写和大写之间的空格”.
【解决方案2】:

像这样简单的东西:

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

也许就足够了;)

【讨论】:

    【解决方案3】:

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

    • 你知道它以大写字母开头
    • 你不想在那个首都前面有一个空间
    • 您希望在所有后续大写字母前面有一个空格

    然后:

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

    Live example

    patrick's answer 启发(但不同于)的更高效版本:

    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"
    

    Live example

    【讨论】:

    • 我能找到的唯一解决方案是处理相邻的大写字母!! +1,好先生。
    • 这是什么意思 - /([a-z])?([A-Z])/g, "$1 $2" ???寻找小写字母后跟大写字母的小词。小号是可选的。在第一组(小写字母)和第二组(大写字母)之间加一个空格?
    • @stack1:不是文字,而是字符。除此之外,是的,很准确。
    【解决方案4】:

    正则表达式选项看起来最好。不过,正确使用正则表达式似乎很棘手。

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

    Regular expression, split string by capital letter but ignore TLA

    【讨论】:

    • 您链接到的大部分线程都是特定于 C# 的,在 JavaScript 中不起作用。
    猜你喜欢
    • 2021-08-18
    • 2021-01-06
    • 2019-08-08
    • 2020-01-04
    • 2021-08-13
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多