在大写字母前插入空格

CLi*_*own 84 javascript regex string jquery replace

我有一个字符串"MySites".我想在My和之间放一个空格Sites.

我怎么能用jQuery或JavaScript做到这一点?

use*_*552 132

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

s = s.replace(/([A-Z])/g, ' $1').trim()
Run Code Online (Sandbox Code Playgroud)

  • @Kristina 括号说“我是一个变量”。如果没有括号,它会为“MySites”生成答案“$1y $1ites” (3认同)
  • 对于首字母缩略词它“失败”,我们如何防止它在 2 个或更多连续大写字母时起作用? (2认同)
  • @ToniMichelCaubet很容易,像这样修改正则表达式:`/([AZ] +)/ g`。+将确保您匹配尽可能多的连续大写字母。 (2认同)

Guf*_*ffa 121

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

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

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

 s = s.replace(/([A-Z])([A-Z])/g, '$1 $2');
Run Code Online (Sandbox Code Playgroud)

  • 只是一个警告,单个字母"ThisIsATest"将导致"This Is ATest"失败. (3认同)
  • @Ceres:好点.这种情况可以通过在任何不是第一个字符的资本之前插入空格来处理,但是你仍然有没有字识别就无法处理的情况,比如"RunThisSQLQuery". (3认同)

Jos*_*one 18

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

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;
}
Run Code Online (Sandbox Code Playgroud)

这意味着:

ACROText -> ACRO Text
UserNameTest -> User Name Test
Run Code Online (Sandbox Code Playgroud)

如果您正在处理数据库列名称,那么这可能会稍微有用(并且在某些方面使用首字母缩略词)

  • 这非常适合我所需要的。它完美地在大写字母之间添加了一个空格,但将首字母缩略词保持在一起。 (4认同)

Tho*_*ein 7

根据这里的一些答案,这是我最终用来将字符串转换为标题大小写的内容:

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')   
Run Code Online (Sandbox Code Playgroud)

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


例子:

  • “yourStringHere”->“你的字符串在这里”
  • "AnotherStringHere" -> "这里的另一个字符串"
  • “someones_string” -> “Someones 字符串”
  • “这里的另一个字符串”->“这里的另一个字符串”
  • "myAWESOMEString" -> "我的真棒字符串"


Dev*_*rke 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];
}
Run Code Online (Sandbox Code Playgroud)

newString会有你想要的价值.此外,如果您想使用正则表达式缩短代码,可以使用以下代码从Javascript camelCase到Regular Form

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


Ada*_*han 5

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

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

http://jsfiddle.net/uXy64/