JavaScript reg撇号是新词边界

时间:2016-01-23 02:58:40

标签: javascript regex word-boundary

我试图定位字符串中每个单词的第一个字母。我在JavaScript工作。我发现Python和PHP的讨论没有解决我特定于JavaScript的问题。

str = "i'm a little tea pot"

regEx = /^.|\b[a-z]/g

我有一个函数,用于对regEx找到的每个字母进行大写。我的结果是撇号大写后的m。我该如何避免这种情况?

大写后功能: 我是一个小茶壶"

2 个答案:

答案 0 :(得分:1)

将每个单词的首字母大写?



var string = prompt("Enter a string");

function capitalizeFirstWord(str) {
    return str.split(/\s+/).map(function(word) {
        return word[0].toUpperCase() + word.slice(1).toLowerCase();
    }).join(' ');
}

document.getElementById("capitalized").innerHTML =  capitalizeFirstWord(string);

<p id="capitalized"></p>
&#13;
&#13;
&#13;

您在字边界处拆分字符串。作为参数,您传入空字符串或空白字符\s。这会在句子中创建所有单词的数组。

要获取第一个字符,您可以使用word[0]word.charAt(0)。然后,您可以使用字符串的其余部分执行字符串连接。

这为您提供了一个全新的数组,需要将其转换回字符串。在这个新数组上调用join方法

答案 1 :(得分:1)

您可以在str.replace中使用回叫功能。

var str = "i'm a little tea pot"
alert(str.replace(/(^|\s)([a-z])/g, function(match, group_1, group_2){return group_1 + group_2.toUpperCase()}))

如果你想将第一个字符后面的字符转换为小写,那么试试这个。

str.replace(/(^|\s)([a-z])(\S*)/g, function(x,y, z, a){return y + z.toUpperCase() + a.toLowerCase()})