use*_*513 6 javascript text character counting
我需要采取一系列混合的亚洲人物(现在,只假设中国汉字或日本汉字/平假名/片假名)和"字母数字"(即Enlgish,法语),并按以下方式计算:
1)将每个亚洲字符数计为1; 2)将每个字母数字WORD计为1;
几个例子:
株式会社myCompany = 4个字符+ 1个字=总共5个株式会社マイコ= 7个字符
到目前为止我唯一的想法是使用:
var wordArray=val.split(/\w+/);
Run Code Online (Sandbox Code Playgroud)
然后检查每个元素以查看其内容是否为字母数字(因此计为1)或不是(因此取数组长度).但我觉得这根本不是很聪明,被计算的文本可能高达10,000字,所以不是很快.
想法?
不幸的是 JavaScriptRegExp不支持 Unicode 字符类;\\w仅适用于 ASCII 字符(以某些浏览器错误为模)。
不过,您可以按组使用 Unicode 字符,因此如果您可以将您感兴趣的每组字符隔离为一个范围,则可以做到这一点。例如。:
\n\nvar r= new RegExp(\n '[A-Za-z0-9_\\]+|'+ // ASCII letters (no accents)\n '[\\u3040-\\u309F]+|'+ // Hiragana\n '[\\u30A0-\\u30FF]+|'+ // Katakana\n '[\\u4E00-\\u9FFF\\uF900-\\uFAFF\\u3400-\\u4DBF]', // Single CJK ideographs\n'g');\n\nvar nwords= str.match(r).length;\nRun Code Online (Sandbox Code Playgroud)\n\n(这试图为日语提供更真实的 \xe2\x80\x98words\xe2\x80\x99 计数,将一种假名类型的每次运行计数为一个单词。当然,这仍然不对,但它可能比将每个音节视为一个单词。)
\n\n显然,如果您想\xe2\x80\x98正确执行\xe2\x80\x99,则必须考虑更多字符。首先,我们希望您没有超出基本多语言平面之外的字符!
\n| 归档时间: |
|
| 查看次数: |
4414 次 |
| 最近记录: |