在大写字母前插入空格

时间:2011-04-07 13:53:04

标签: javascript jquery regex string replace

我有一个字符串"MySites"。我想在MySites之间放置一个空格。

我如何在jQuery或JavaScript中执行此操作?

8 个答案:

答案 0 :(得分:115)

这将找到每个小写字符后跟一个大写字符,并在它们之间插入一个空格:

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

对于出现2个连续大写字母的特殊情况(例如:ThisIsATest),请在下面添加其他代码:

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

答案 1 :(得分:112)

您可以在每个大写字符前添加一个空格,并修剪前导和尾随空格

s = s.replace(/([A-Z])/g, ' $1').trim()

答案 2 :(得分:16)

我可以建议对当前接受的答案进行轻微修改:

function insertSpaces(string) {
    string = string.replace(/([a-z])([A-Z])/g, '$1 $2');
    string = string.replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')
    return string;
}

这意味着:

ACROText -> ACRO Text
UserNameTest -> User Name Test

如果您正在处理数据库列名称(并且正在使用首字母缩写词来处理某些事情),这可能会稍微有用一些。

答案 3 :(得分:6)

这应该在每个大写字母之间插入一个空格,该大写字母前面没有大写字母。

var myString = "MySites"
var newString = "";
var wasUpper = false;
for (var i = 0; i < myString.length; i++)
{
    if (!wasUpper && myString[i] == myString.toUpperCase()[i])
    {
        newString = newString + " ";
        wasUpper = true;
    }
    else
    {
        wasUpper = false;
    }
    newString = newString + myString[i];
}

newString将拥有您想要的价值。此外,如果您想使用正则表达式缩短代码,可以使用Javascript camelCase to Regular Form中的以下代码

"thisStringIsGood"
    // insert a space before all caps
    .replace(/([A-Z])/g, ' $1')
    // uppercase the first character
    .replace(/^./, function(str){ return str.toUpperCase(); })

答案 4 :(得分:5)

正则表达式查找小写 - 大写边界然后插入空格

<div id='x'>ThisIsMySites</div>
$('#x').text( $('#x').text().replace(/([a-z])([A-Z])/g, "$1 $2") );

http://jsfiddle.net/uXy64/

答案 5 :(得分:1)

您可以使用String#split()和大写字母([A-Z])的预读,然后使用空格将数组Array#join() {

let stringCamelCase = "MySites";

let string = stringCamelCase.split(/(?=[A-Z])/).join(" ");

console.log(string)

或者,作为字符串对象函数:

String.prototype.cC2SC = function() {
  return this.split(/(?=[A-Z])/).join(" ");
}

console.log("MyCamelCase".cC2SC());

答案 6 :(得分:0)

在单个正则表达式中替换(没有修饰或连接),允许任何字符而不只是字母[a-z][A-Z]

const str = "MySites";
str.replace(/(?<!^)([A-Z])/, " $1"); // -> "My Sites"

您可以详细了解(?<!^) here的外观。

答案 7 :(得分:0)

这是我根据以下一些答案最终用来将字符串转换为大写形式的原因:

str = str
  .replace(/(_|-)/g, ' ')
  .trim()
  .replace(/\w\S*/g, function(str) {
    return str.charAt(0).toUpperCase() + str.substr(1)
  })   
  .replace(/([a-z])([A-Z])/g, '$1 $2')
  .replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')   

这里是一个JSFiddle,您可以在其中测试您的字符串以查看它是否满足您的需求: https://jsfiddle.net/thomastasa/5236dv8t/85/


示例:

  • “ yourStringHere”->“您的字符串在这里”
  • “ AnotherStringHere”->“此处的另一个字符串”
  • “ someones_string”->“ Someones String”
  • “另一个字符串在这里”->“另一个字符串在这里”
  • “ myAWESOMEString”->“我的AWESOME字符串”