Javascript 使用jquery将字符串数据中的所有大写单词的第一个字母加起来
我的字符串数据如下所示Javascript 使用jquery将字符串数据中的所有大写单词的第一个字母加起来,javascript,jquery,regex,Javascript,Jquery,Regex,我的字符串数据如下所示 var HmtlStr = "<span>My names is <u>KERBEROS</u>. AGE: 29, my eyes <b>BROWN</b>.</span" var HmtlStr=“我的名字是KERBEROS。年龄:29,我的眼睛是棕色的。在替换中使用函数来更改字符串: HmtlStr = HmtlStr.replace( /([A-Z])([A-Z]+)/g, functio
var HmtlStr = "<span>My names is <u>KERBEROS</u>. AGE: 29, my eyes <b>BROWN</b>.</span"
var HmtlStr=“我的名字是KERBEROS。年龄:29,我的眼睛是棕色的。在替换中使用函数来更改字符串:
HmtlStr = HmtlStr.replace(
/([A-Z])([A-Z]+)/g,
function(a,m1,m2) {
return m1 + m2.toLowerCase();
}
);
编辑:
内置的toLowerCase
方法处理大多数字符,您只需将它们包含在正则表达式的集合中([A-ZÖİŞ࢞Ğ]
)即可处理它们。要处理内置方法无法处理的少数字符,您可以先创建一个函数来替换这些字符:
function localLowerCase(str) {
str = str.replace(
/İ/g,
function(m){
var i = "İ".indexOf(m);
return i != -1 ? "ı"[i] : m;
}
);
return str.toLowerCase();
}
通过在/İ/
模式、“İ”
字符串和“ı”
字符串中添加字符和替换字符,您可以轻松地为函数添加更多要处理的字符。也许CSS可以工作?尝试以下方法:
'apple cat dog stack overflow'.replace(/(\b)([a-zA-Z])/g,
function(firstLetter){
return firstLetter.toUpperCase();
})
:)这将更改文本中的每个单词,因此不会给出所请求的结果。@Guffa:如果文本转换位于
或
标记中,则不会definitions@fudgey:那么它仍然不会给出请求的结果,如“AGE”“没有改变。在所有浏览器中,土耳其语字母表和文本转换
,都存在国际化问题,据我所知,Javascript确实是解决这一问题的方法。非常感谢。你的建议很有效。但我还有一个问题。我的语言是土耳其语,土耳其语字符集包括特殊字符。都是这样,;İ,ı,Ş,ş,Ü,ü,Ö,ö,Ğ,ğ,Ç,ç. 当使用此chracters执行的函数不起作用时。您对这种情况有什么建议吗?@Kerberos:内置方法处理大多数字符,您只需将它们包含在正则表达式中即可。对于那些没有按您喜欢的方式处理的函数,您可以先创建一个函数来替换这些函数。我在上面添加了一些代码。再次感谢。当我使用带有[A-ZÖİŞ࢞ĞĞĞ]定义的正则表达式时,特殊的字符会像你建议的那样变成小写,而不带“İ”。对不起,我听不懂。在正则表达式代码段中,我必须在哪里使用localLowerCase函数?我的意思是,当([A-Z])([A-Z]+)条件是字符串事件时。我必须使用localLowerCase函数。@Kerberos:在正则表达式中包含字符以便处理它们,然后使用localLowerCase(m2)
而不是m2.toLowerCase()
来处理toLowerCase
未按您喜欢的方式处理的字符。非常感谢。我试试看。
'apple cat dog stack overflow'.replace(/(\b)([a-zA-Z])/g,
function(firstLetter){
return firstLetter.toUpperCase();
})