<script type="text/javascript">
function verification() {
var sf = document.getElementById("operatorDesc").value;
alert(sf.length);
}
</script>
<textarea name="operatorDesc" id="operatorDesc"></textarea>
<input type="button" οnclick="verification()" value="取长度"/>
</body>
在textarea里面输入一些中英结合的句子,其长度如下:
f -----1 ,
f飞-----2,
飞飞----2.
即length函数将中文字符视为一个单位。 这里其实我的本意是中文按2个字符长度来计算,于是就出现了偏差。
下午请教了下前端的同事,给出一个精妙的解决方案,呵呵:
String.prototype.cLen = function(){ return this.replace(/[\u00FF-\uFFFF]/g," ").length; };
同样,在java代码里面,一样可以无损的切割中英文混合字符: (简单的利用char 255作为标尺)
public class Test111 {
public static void main(String[] args) {
final String s1 = "中yin文";
final String s2 = "中ying文";
final String s3 = "yin中";
final String s4 = "中yin";
final String s5 = "中英文";
final String s6 = "中英文字";
System.out.println(cut(s1) + " 字串长度为: " + s1.length());
System.out.println(cut(s2) + " 字串长度为: " + s2.length());
System.out.println(cut(s3) + " 字串长度为: " + s3.length());
System.out.println(cut(s4) + " 字串长度为: " + s4.length());
System.out.println(cut(s5) + " 字串长度为: " + s5.length());
System.out.println(cut(s6) + " 字串长度为: " + s6.length());
}
public static String cut(String param) {
int len = param.length();
int tmp = 0;
String result="";
for (int j = 0; j < len; j++)
{
tmp++;
if (param.charAt(j) > 255)
{
tmp++;
}
if (tmp > len / 2)
{
result = param.substring(0, j) + "***";
break;
}
}
return result;
}
}