zoukankan      html  css  js  c++  java
  • 文本处理工具(一)基础处理

    文本处理工具类

    对网上常见的文本处理做了整理,以备后用,持续更新中……

        public class TextFormat
        {
            /// <summary>
            /// 全角转半角。
            /// </summary>
            public static string ToDBC(string text)
            {
                char[] c = text.ToCharArray();
                for (int i = 0; i < c.Length; i++)
                {
                    if (c[i] == 12288)
                    {
                        c[i] = (char)32;
                        continue;
                    }
                    if (c[i] > 65280 && c[i] < 65375)
                        c[i] = (char)(c[i] - 65248);
                }
                return new string(c);
            }
    
            /// <summary>
            /// 去除HTML标签。
            /// </summary>
            public static string FilterHtmlTag(string text)
            {
                return Regex.Replace(text, "<[^>]+>", "");
            }
    
            /// <summary>
            /// 剔除非常规字符。
            /// </summary>
            /// <remarks>
            /// 网上常用的汉字范围是U4E00-U9FA5,这个范围是“中日韩统一表意文字”,但要包含全部,则还要兼容他们的扩展集2E80-A4CF、F900-FAFF、FE30-FE4F。
            /// 2E80-A4CF:包含了中日朝部首补充、康熙部首、表意文字描述符、中日朝符号和标点、日文平假名、日文片假名、注音字母、谚文兼容字母、象形字注释标志、注音字母扩展、中日朝笔画、日文片假名语音扩展、带圈中日朝字母和月份、中日朝兼容、中日朝统一表意文字扩展A、易经六十四卦符号、中日韩统一表意文字、彝文音节、彝文字根
            /// F900-FAFF:中日朝兼容表意文字
            /// FE30-FE4F:中日朝兼容形式
            /// 
            /// GB2312:u00a4-u9fa0、uff01-uffe5
            /// 
            /// 见:http://ju.outofmemory.cn/entry/53571
            /// 
            /// 标准CJK文字:u3400-u4DB5,u4E00-u9FA5,u9FA6-u9FBB,uF900-uFA2D,uFA30-uFA6A,uFA70-uFAD9
            /// 全角ASCII、全角中英文标点、半宽片假名、半宽平假名、半宽韩文字母范围:uFF00-uFFEF
            /// CJK部首补充:u2E80-u2EFF
            /// CJK标点符号:u3000-u303F
            /// CJK笔划:u31C0-u31EF
            /// 康熙部首:u2F00-u2FDF
            /// 汉字结构描述字符:u2FF0-u2FFF
            /// 注音符号:u3100-u312F
            /// 注音符号(闽南语、客家语扩展):u31A0-u31BF
            /// 日文平假名:u30A0-u30FF
            /// 日文片假名拼音扩展:u31F0-u31FF
            /// 韩文拼音:uAC00-uD7AF 
            /// </remarks>
            public static string FilterMeanlessWord(string text)
            {
                return Regex.Replace(text, "[^u4e00-u9fa50-9a-zA-Z]", "");
            }
    
            /// <summary>
            /// 剔除常用标点。
            /// </summary>
            public static string FilterCommonPunctuation(string text)
            {
                return Regex.Replace(text, @"[~!@#$%^&*()+=|\}]{[:;<,>?/""_-`.']+", "");
            }
    
            /// <summary>
            /// 转换会小写。
            /// </summary>
            public static string ToLower(string text)
            {
                return text.ToLower();
            }
    
            /// <summary>
            /// 过滤空格。
            /// </summary>
            public static string FilterSpace(string text)
            {
                return Regex.Replace(text, "[\s]+", "");
            }
    
            /// <summary>
            /// 转换为Unicode字符。
            /// </summary>
            public static string ToUnicode(string text)
            {
                StringBuilder result = new StringBuilder();
                for (int i = 0; i < text.Length; i++)
                {
                    if (".$^{[(|)*+?\".Contains(text[i].ToString()))
                    {
                        byte[] bytes = Encoding.Unicode.GetBytes(text[i].ToString());
                        result.Append("\u");
                        result.Append(bytes[1].ToString("x").PadLeft(2, '0'));
                        result.Append(bytes[0].ToString("x").PadLeft(2, '0'));
                    }
                    else
                    {
                        result.Append(text[i]);
                    }
                }
                return result.ToString();
            }
    
            /// <summary>
            /// 大小写金额转换。
            /// </summary>
            public static string ToChMoney(double money)
            {
                string s = money.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A");
                string d = Regex.Replace(s, @"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[.]|$))))", "${b}${z}");
                return Regex.Replace(d, ".", m => "负圆空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万亿兆京垓秭穰"[m.Value[0] - '-'].ToString());
            }
    
            /// <summary>
            /// 中文转数字。
            /// </summary>
    
            public static string ChToNum(string text)
            {
                StringBuilder tb = new StringBuilder();
    
                foreach (var c in text)
                {
                    switch (c)
                    {
                        case '零': tb.Append(0); break;
                        case '一': tb.Append(1); break; //数字处理时考虑到一类似于—,可以不做转换
                        case '二': tb.Append(2); break;
                        case '三': tb.Append(3); break;
                        case '四': tb.Append(4); break;
                        case '五': tb.Append(5); break;
                        case '六': tb.Append(6); break;
                        case '七': tb.Append(7); break;
                        case '八': tb.Append(8); break;
                        case '九': tb.Append(9); break;
                        case '壹': tb.Append(1); break;
                        case '贰': tb.Append(2); break;
                        case '叁': tb.Append(3); break;
                        case '肆': tb.Append(4); break;
                        case '伍': tb.Append(5); break;
                        case '陆': tb.Append(6); break;
                        case '柒': tb.Append(7); break;
                        case '捌': tb.Append(8); break;
                        case '玖': tb.Append(9); break;
                        default: tb.Append(c); break;
                    }
                }
                return tb.ToString();
            }
        }
    
  • 相关阅读:
    阿里DatatX mysql8往 Elasticsearch 7 插入时间数据 时区引发的问题
    通俗易懂 k8s (3):kubernetes 服务的注册与发现
    ReplicaSet 和 ReplicationController 的区别
    使用Go module导入本地包
    k8s之statefulset控制器
    终于成功部署 Kubernetes HPA 基于 QPS 进行自动伸缩
    Atitit drmmr outline org stat vb u33.docx Atitit drmmr outline org stat v0 taf.docx Atitit drmmr out
    Atitit all diary index va u33 #alldiary.docx Atitit alldiaryindex v1 t717 目录 1. Fix 1 2. Diary deta
    Atitit path query 路径查询语言 数据检索语言 目录 1.1. List map >> spel 1 1.2. Html数据 》》Css选择符 1 1.3. Json 》map》
    Atitit prgrmlan topic--express lan QL query lan表达式语言 目录 1. 通用表达语言(CEL) 1 1.1. 8.2 功能概述 1 1.2. Ongl
  • 原文地址:https://www.cnblogs.com/krockey/p/9077839.html
Copyright © 2011-2022 走看看