我已经搜索了解决方案,但还没有找到.
我有以下字符串.
1. hello
2. HELLO
3. hello_world
4. HELLO_WORLD
5. Hello World
Run Code Online (Sandbox Code Playgroud)
我想将它们转换为以下内容:
1. Hello
2. Hello
3. HelloWorld
4. HelloWorld
5. HelloWorld
Run Code Online (Sandbox Code Playgroud)
如果字符串中没有空格和下划线,则首先是大写,而所有其他都是小写.如果单词由下划线或空格分隔,则每个单词的大写第一个字母,并删除空格和下划线.我怎么能用JavaScript做到这一点.
谢谢
Fel*_*ing 14
这是一个正则表达式解决方案:
首先小写字符串:
str = str.toLowerCase();
Run Code Online (Sandbox Code Playgroud)
_用大写字符替换单词中的all 和空格和第一个字符:
str = str.replace(/(?:_| |\b)(\w)/g, function(str, p1) { return p1.toUpperCase()})
Run Code Online (Sandbox Code Playgroud)
更新:更少的步骤;)
说明:
/ // start of regex
(?: // starts a non capturing group
_| |\b // match underscore, space, or any other word boundary character
// (which in the end is only the beginning of the string ^)
) // end of group
( // start capturing group
\w // match word character
) // end of group
/g // and of regex and search the whole string
Run Code Online (Sandbox Code Playgroud)
捕获组的值p1在函数中可用,整个表达式由函数的返回值替换.
Nic*_*ver 11
你可以这样做:
function toPascalCase(str) {
var arr = str.split(/\s|_/);
for(var i=0,l=arr.length; i<l; i++) {
arr[i] = arr[i].substr(0,1).toUpperCase() +
(arr[i].length > 1 ? arr[i].substr(1).toLowerCase() : "");
}
return arr.join("");
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里测试它,方法非常简单,.split()当找到空格或下划线时,字符串变成数组.然后循环遍历数组,上部包装第一个字母,下部包装其余部分......然后将标题 - 单词单词数组.join()再次合并为一个字符串.
function foo(str) {
return $(str.split(/\s|_/)).map(function() {
return this.charAt(0).toUpperCase() + this.slice(1).toLowerCase();
}).get().join("");
}
Run Code Online (Sandbox Code Playgroud)
工作演示: http ://jsfiddle.net/KSJe3/3/ (我在演示中使用了Nicks正则表达式)
编辑:代码的另一个版本 - 我用$ .map()替换了map():
function foo(str) {
return $.map(str.split(/\s|_/), function(word) {
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
}).join("");
}
Run Code Online (Sandbox Code Playgroud)
工作演示: http ://jsfiddle.net/KSJe3/4/
| 归档时间: |
|
| 查看次数: |
16381 次 |
| 最近记录: |