利用正则表达式计算含有中文的字符串长度

简介:
using System;
using System.Text.RegularExpressions;

namespace LangZi
{
    /// <summary>
    
/// StringHelper 的摘要说明。
    
/// </summary>

    public class StringHelper
    {
        public StringHelper()
        {
            //
            
// TODO: 在此处添加构造函数逻辑
            
//
        }


        #region GetLength
        /// <summary>
        
/// 返回包含中文字符的字符串长度
        
/// C# 的string.Length中中文字只做1位统计,所以要将其转换为2位
        
/// </summary>
        
/// <param name="strSource">要统计长度的字符串变量</param>
        
/// <returns>字符串长度</returns>

        public static int GetLength(string strSource)
        {
            Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
            int nLength = strSource.Length;

            for(int i=0; i<strSource.Length; i++)
            {
                if (regex.IsMatch(strSource.Substring(i,1))) 
                {
                    nLength++;
                }

            }


            return nLength;
        }

        #endregion

    }

}

使用:

int iLength= LangZi.StringHelper.GetLength(source)


土人用最土的办法,以求实现自己的目标,看了 银河兄的 C#中的字符编码问题 一文,发现有更好更完善的方法:

using System;
using System.Text;

namespace LangZi
{
    /// <summary>
    
/// StringHelper 的摘要说明。
    
/// </summary>

    public class StringHelper
    {
        public StringHelper()
        {
            //
            
// TODO: 在此处添加构造函数逻辑
            
//
        }


        #region GetLength
        /// <summary>
        
/// 返回包含中文字符的字符串长度
        
/// C# 的string.Length中中文字只做1位统计,所以要将其转换为2位
        
/// </summary>
        
/// <param name="strSource">要统计长度的字符串变量</param>
        
/// <returns>字符串长度</returns>

        public static int GetLength(string strSource)
        {
             return Encoding.GetEncoding("GB18030").GetBytes(strSource).Length; 
        }

        #endregion

    }

本文转自浪子博客园博客,原文链接:http://www.cnblogs.com/walkingboy/archive/2005/08/24/222005.html,如需转载请自行联系原作者
目录
相关文章
|
JavaScript 前端开发 Java
正则表达式深度解析:匹配任意字符串
【4月更文挑战第1天】
8040 0
|
JavaScript 前端开发
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
|
算法 测试技术 C#
【动态规划】【字符串】C++算法:正则表达式匹配
【动态规划】【字符串】C++算法:正则表达式匹配
|
JavaScript 前端开发
用JavaScript正则表达式匹配对应字符串高亮显示,并过滤掉空格、<、>等HTML节点符号
用JavaScript正则表达式匹配对应字符串高亮显示,并过滤掉空格、<、>等HTML节点符号
|
Python
133 python高级 - 正则表达式(原始字符串)
133 python高级 - 正则表达式(原始字符串)
121 0
|
12月前
|
数据采集 监控 数据安全/隐私保护
Python正则表达式:用"模式密码"解锁复杂字符串
正则表达式是处理字符串的强大工具,本文以Python的`re`模块为核心,详细解析其原理与应用。从基础语法如字符类、量词到进阶技巧如贪婪匹配与预定义字符集,结合日志分析、数据清洗及网络爬虫等实战场景,展示正则表达式的强大功能。同时探讨性能优化策略(如预编译)和常见错误解决方案,帮助开发者高效掌握这一“瑞士军刀”。最后提醒,合理使用正则表达式,避免过度复杂化,追求简洁优雅的代码风格。
308 0
|
JavaScript 前端开发 Java
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
|
11月前
|
前端开发
前端使用正则表达式检查是否为十六进制字符串
前端使用正则表达式检查是否为十六进制字符串
258 6
|
Java API 索引
U4字符串以及正则表达式
【10月更文挑战第19天】在 Java 中,字符串是重要数据类型,支持多种操作如长度获取、字符访问、子串提取等。正则表达式提供强大的模式匹配和文本处理功能,通过 `Pattern` 和 `Matcher` 类实现。示例代码展示了如何使用正则表达式匹配单词字符。常用语法包括字符类、数量词、边界匹配和分组。
209 1
|
前端开发 C#
C# 一分钟浅谈:字符串操作与正则表达式
本文详细介绍C#中的字符串操作与正则表达式应用,涵盖字符串拼接、分割、查找及替换等基础操作,并通过实例讲解正则表达式的模式匹配、文本替换与分组捕获技巧。同时,文章还探讨了性能优化、复杂度管理和安全性等问题及解决策略,助你提升编程效率,应对实际开发挑战。
292 1