50

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

我试图做的例子:

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

我知道该str.split()方法,但是我不确定如何使此功能与大写字母一起使用。

我试过了:

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

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

4

4 回答 4

112

使用 RegExp-literals、前瞻和[A-Z]

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

于 2012-04-08T17:13:43.867 回答
9

您可以使用 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"]
于 2012-04-08T17:17:44.307 回答
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);

于 2019-07-12T00:44:28.077 回答
1

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

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;
于 2019-05-10T05:37:57.787 回答