我有一个字符串"MySites"
。我想在My
和之间放置一个空格Sites
。
我怎样才能在 jQuery 或 JavaScript 中做到这一点?
我有一个字符串"MySites"
。我想在My
和之间放置一个空格Sites
。
我怎样才能在 jQuery 或 JavaScript 中做到这一点?
您可以在每个大写字符之前添加一个空格并修剪前导和尾随空格
s = s.replace(/([A-Z])/g, ' $1').trim()
这将找到每个出现的小写字符后跟一个大写字符,并在它们之间插入一个空格:
s = s.replace(/([a-z])([A-Z])/g, '$1 $2');
对于出现 2 个连续大写字母的特殊情况(例如:ThisIsATest),请在下面添加附加代码:
s = s.replace(/([A-Z])([A-Z])/g, '$1 $2');
我是否可以建议对当前接受的答案稍作修改:
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
如果您正在处理 db 列名,这可能会更有用(并且在某些事情上使用首字母缩略词)
根据这里的一些答案,这是我最终用来将字符串转换为标题大小写的内容:
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/
例子:
这应该在前面没有大写字母的每个大写字母之间插入一个空格。
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
会有你想要的value。此外,如果您想使用正则表达式缩短代码,您可以使用以下代码从Javascript camelCase 到正则形式
"thisStringIsGood"
// insert a space before all caps
.replace(/([A-Z])/g, ' $1')
// uppercase the first character
.replace(/^./, function(str){ return str.toUpperCase(); })