问题描述
我需要在文本
输入中计算文本的物理长度。术语物理的是指物理的。在这种情况下,我认为
将7bit-Ascii视为每个字符一个字节。其他字符
可能更长,例如西里尔字母每个字符2个字节。
有没有一种安全简便的方法来注意非7bit-Ascii输入?
干杯,
M.
-
对复杂的乐趣感兴趣?你,老公,女朋友。
越多越好。与Kirby取得联系,仅通过WASTE,Box 7391,LA
- = - = - - = - = - = - = - - = - = -
Martin Dietze - = - = -
推荐答案
有这里有两个问题。第一个是unicode
个字符(代码点)的数量。第二个是否有任何unicode
字符需要超过7位才能代表。
函数charCount(str){
//计算unicode字符的数量,这可能与
str.length
var esc = escape(str); //逃避比encodeURI更强大
返回esc.replace(/%uD [CF] ../ g,'''')
.replace(/%u .... / g,''"'')
.replace(/%../ g,"''")
.length;
}
函数SevenBitsOrLess(str){
//如果str包含需要8或
更多位
var esc = escape(str);
如果(esc.match(/%u /))返回false;
返回(!esc.match(/%[89A-F] /));
}
//示例
var str0 =" ab
There are two questions here. The first is the number of unicode
characters (code points). The second is whether there are any unicode
characters requiring more than 7 bits to represent.
function charCount(str) {
// counts the number of unicode characters, which may differ from
str.length
var esc = escape(str); // escape more robust than encodeURI
return esc.replace(/%uD[C-F]../g,'''')
.replace(/%u..../g,''"'')
.replace(/%../g,"''")
.length;
}
function SevenBitsOrLess(str) {
// returns false if str includes a unicode character requiring 8 or
more bits
var esc = escape(str);
if (esc.match(/%u/)) return false;
return (!esc.match(/%[89A-F]/));
}
// Example
var str0 = "ab
这篇关于以字节为单位计算文本长度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!