【问题标题】:Split by Caps in Javascript在 Javascript 中按大写字母拆分
【发布时间】:2012-04-21 07:44:51
【问题描述】:

我正在尝试使用 Javascript 通过大写拆分字符串,

我想做什么的例子:

"HiMyNameIsBob"  ->   "Hi My Name Is Bob"
"GreetingsFriends" -> "Greetings Friends"

我知道str.split() 方法,但是我不确定如何使这个函数使用大写字母。

我试过了:

str.split("(?=\\p{Upper})")

不幸的是,这不起作用, 任何帮助都会很棒。

【问题讨论】:

    标签: javascript regex split


    【解决方案1】:

    使用正则表达式、前瞻和[A-Z]

    console.log(
      // -> "Hi My Name Is Bob"
      window.prompt('input string:', "HiMyNameIsBob").split(/(?=[A-Z])/).join(" ")  
    )

    【讨论】:

    • 太棒了!我不知道会这么简单,我在 Google 上找不到任何东西,谢谢
    • 不要在这里挑剔,但我也需要这个。上面的答案不会返回“Hi My Name Is Bob”。它返回一个数组。要真正得到一个字符串,这样做:input.split(/(?=[A-Z])/).join(" ");
    【解决方案2】:

    你可以使用 String.match 来分割它。

    "HiMyNameIsBob".match(/[A-Z]*[^A-Z]+/g) 
    // output 
    // ["Hi", "My", "Name", "Is", "Bob"]
    

    如果开头有小写字母,它也可以拆分。如果您不希望这种行为,只需在模式中使用 + 而不是 *

    "helloHiMyNameIsBob".match(/[A-Z]*[^A-Z]+/g) 
    // Output
    ["hello", "Hi", "My", "Name", "Is", "Bob"]
    

    【讨论】:

    • 很好,我不知道,谢谢提醒!
    • 模式必须改变。目前,它不匹配前面的小写字符或单个大写字符。
    • IE 确实允许使用 split 方法。
    • @AshBurlaczenko 是的,在最近的版本中。
    • @shiplu.mokadd.im,不过你的回答不是这样。
    【解决方案3】:

    扩展 Rob W 的答案。

    这会通过添加 [a-z] 检查前面的小写字符来处理任何带有缩写的句子,因此,它不会溢出任何大写字符串。

    // Enter your code description here
     var str = "THISSentenceHasSomeFunkyStuffGoingOn. ABBREVIATIONSAlsoWork.".split(/(?=[A-Z][a-z])/).join(" ");  // -> "THIS Sentence Has Some Funky Stuff Going On. ABBREVIATIONS Also Work."
     console.log(str);

    【讨论】:

      【解决方案4】:

      以小写字母开头的文本的解决方案-

      let value = "getMeSomeText";
      let newStr = '';
          for (var i = 0; i < value.length; i++) {
            if (value.charAt(i) === value.charAt(i).toUpperCase()) {
              newStr = newStr + ' ' + value.charAt(i)
            } else {
              (i == 0) ? (newStr += value.charAt(i).toUpperCase()) : (newStr += value.charAt(i));
            }
          }
          return newStr;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 2022-01-23
        • 1970-01-01
        • 2017-01-28
        • 2016-09-04
        • 2015-01-06
        • 1970-01-01
        相关资源
        最近更新 更多