Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery将字符串数据中的所有大写单词的第一个字母加起来_Javascript_Jquery_Regex - Fatal编程技术网

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();
       })