Javascript 中按大写字母分割

问题描述 投票:0回答:5

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

我正在尝试做的事情的例子:

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

我知道

str.split()
方法,但是我不确定如何使此功能适用于大写字母。

我已经尝试过:

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

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

javascript regex split
5个回答
113
投票

使用 RegExp-literals、前瞻和

[A-Z]
:

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


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"]

4
投票

扩展 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);


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;

0
投票

const inputString = "ThisIsAGoodExample";
const splitArray = inputString.split(/(?=[A-Z])/);
console.log(splitArray); // ["This", "Is", "A", "Good" "Example"]

© www.soinside.com 2019 - 2024. All rights reserved.