JS代码判断字符串中有多少汉字

针对前台脚本验证的几种方式

1、

$("form").submit(function () {
var content = editor.getContentTxt();
var sum = 0;
re = /[\u4E00-\u9FA5]/g; //测试中文字符的正则
if (content) {
if (re.test(content)) //使用正则判断是否存在中文
{
if (content.match(re).length <= 10) { //返回中文的个数
$.dialog.tips("正文不能小于10个汉字!");
return false;
}
else {
var $submit = $("input[type='submit']").attr("disabled", true);
setTimeout(function () { $submit.attr("disabled", false) }, 5000);
return true;
}
}
else {
$.dialog.tips("正文不能小于10个汉字!");
return false;
}
}
else {
$.dialog.tips("正文不能小于10个汉字!");
return false;
}
});

2、针对获取内容字符串的长度,也可以分开来写,汉子和字符

//获取字符串长度(汉字算两个字符,字母数字算一个)
function getByteLen(val) {
var len = 0;
for (var i = 0; i < val.length; i++) {
var a = val.charAt(i);
if (a.match(/[^\x00-\xff]/ig) != null) {
len += 2;
}
else {
len += 1;
}
}
return len;
}

3、键盘字符验证

// 只要键盘一抬起就验证编辑框中的文字长度,最大字符长度可以根据需要设定
function checkLength(obj) {
var maxChars = 100;//最多字符数
var curr = maxChars - getByteLen(obj.value);
if (curr < 10) {
document.getElementById("checklen").innerHTML = curr.toString();
}
if (curr > 0) {
document.getElementById("checklen").innerHTML = curr.toString();
} else {
document.getElementById("checklen").innerHTML = '0';
document.getElementById("subject").readOnly = true;
}
}

针对后台脚本验证的几种方式

1、只验证汉字的方法

/// <summary>
/// 计算字符串长度,只校验汉字
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static int ChineseLen(string str)
{
if (string.IsNullOrEmpty(str))
return ; Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
char[] stringChar = str.Trim().ToCharArray();
StringBuilder sb = new StringBuilder();
int nLength = ;
for (int i = ; i < stringChar.Length; i++)
{
if (regex.IsMatch((stringChar[i]).ToString()) || (stringChar[i] > ))
{
nLength += ;
}
}
return nLength;
}

2、包括中文、字母和数字

/// <summary>
/// 计算字符串长度,中文按照2个字节算,字母和数字按照1个字节算
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static int Len(string str)
{
if (string.IsNullOrEmpty(str))
return ; Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
char[] stringChar = str.Trim().ToCharArray();
StringBuilder sb = new StringBuilder();
int nLength = ;
for (int i = ; i < stringChar.Length; i++)
{
if (regex.IsMatch((stringChar[i]).ToString()) || (stringChar[i] > ))
{
nLength += ;
}
else
{
nLength = nLength + ;
} }
return nLength;
}

3、检查同一个字符串中,不相同字符的个数

/// <summary>
/// 检查同一个字符串中不相同字符的个数
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static int CheckStringChar(string Str)
{
string newStr = "";
char oldChar = '_';
for (int i = ; i < Str.Length; i++)
{
if (oldChar != Str[i])
{
oldChar = Str[i];
newStr += Str[i];
}
}
return newStr.Length;
}

4、检测字符串中含有中文字符串的的实际长度

/// <summary>
/// 检测含有中文字符串的实际长度
/// </summary>
/// <param name="str">要检测的字符串</param>
/// <returns>返回结果长度</returns>
public static int GetChineseStringLength(string str)
{
int chineseLength = ;
byte[] b = System.Text.ASCIIEncoding.ASCII.GetBytes(str);
for (int i = ; i < b.Length; i++)
{
if (b[i] == )
{
chineseLength++;
}
chineseLength++;
}
return chineseLength;
}
上一篇:Linux学习之十四-Linux文件和目录权限


下一篇:vuex 、store、state (转载)