C#用一个循环[等效]取出字符串中的数字

来源:互联网 发布:淘宝虚拟物品退款规则 编辑:程序博客网 时间:2024/05/03 19:19

public string 内容等效(string 转换内容, string 指定内容)

{

string Sz = "", Bj = "0123456789";//[等效]取出字符串中的数字
        for (int Qs = 0; Qs < DD_BM.Trim().Length; Qs++)
        {
            string Zf = DD_BM.Trim().Substring(Qs, 1); //依循环取其中一个字符
            if (Bj.IndexOf(Zf) >= 0)//比较
            { Sz += Bj.IndexOf(Zf); }//等效
        }/*这里只取出指定的字符过滤掉与指定字符无关的字符*/

return Sz;

}

DD_BM:输入字符串。

☆☆☆利用以上原理可以变形出一些意想不到的效果,就好像是变形金钢一样。☆☆☆

下面再来看利用等效原理变形例子:

        private string Zh_Zwz(string DD_BM, string BiaoJi, bool Zs)//[等效]转换中文/数值
        {
            string Sz = "";
            try
            {
                for (int Qs = 0; Qs < DD_BM.Length; Qs++)
                {
                    if (Bj.IndexOf(DD_BM.Substring(Qs, 1)) >= 0 && !Zs)//比较
                    { Sz += Zz.Substring(Bj.IndexOf(DD_BM.Substring(Qs, 1)), 1); } //等效中文
                    if (Zz.IndexOf(DD_BM.Substring(Qs, 1)) >= 0 && Zs)
                    { Sz += Bj.Substring(Zz.IndexOf(DD_BM.Substring(Qs, 1)), 1); }//等效数字
                }
            }/*Bj数字字符串,Zz中文字符串,这里应用对应等效,用这个对应等效原理可以取代switch ()那个写一串的代码,举例如下*/
            catch (Exception)
            {  }
            return Sz;
        }

public string 对应等效(string 等效内容, string 对应内容, string 等效对应)
        {
            try
            {
                for (int 对应 = 0; 对应 < 等效内容.Length; 对应++)
                {
                     if (等效内容.IndexOf(等效对应.Substring(对应, 1)) >= 0) 内容 +=对应内容([等效对应.Substring(对应, 1));//我的团队成员进来进来
                }/*即有过滤又有等效*/
            }
            catch (Exception Ts)
            { 内容 = "对应等效:非法->" + Ts.ToString(); }
            return 内容;
        }

调用:int 精度数 = int.Parse(对应等效("五位精度", "0123456789", "〇一二三四五六七八九"));

调用:int 精度数 = int.Parse(内容等效("5位精度", "0123456789"));

上面等效应用相当于如下的语句:

 private int JinDu(string XiaoShu)//精度
        {
            int Qw = 0;
            switch (XiaoShu)
            {
                case "一位精度": Qw = 1; break;//滚蛋
                case "二位精度": Qw = 2; break;//滚蛋
                case "三位精度": Qw = 3; break;//滚蛋
                case "四位精度": Qw = 4; break;
                case "五位精度": Qw = 5; break;
                case "六位精度": Qw = 6; break;
                case "七位精度": Qw = 7; break;
                case "八位精度": Qw = 8; break;
                case "九位精度": Qw = 9; break;
            }
           
            return Qw;
        }

透过以上例子可以看到等效原理灵活变形,等效更多应用例子比如:单词等效......就不赘举了。

-----------------------------------------------

起先以为写这个很为难,起码需要两个循环才可以,后经过净思才发现这种妙用,妙用的关键就在等效这个效果来实现。

网络上的资料也找过不少,方法也不少,有的不是C#语言,有的用钱买的控件,看太多了眼累,还是自己想,自己写好了。

妙思写出后发现原来这么简单。

-----------------------------------------------

string 源 = ")((){[]}{[()]}({}[])({)({)}({[)}][[", 比 = "() {} []", 汇 = "";foreach (var 元素 in 源)    if (比.Contains(元素.ToString()))        汇 += 元素.ToString();/*新等效取字*/比.Split(@"|/\".ToArray())/*可以使用连续字符串*/

 

            string 源 = ")((){[]}{[()]}({}[])({)({)}({[)}][[", 比 = "() {} []", 汇 = "", 示 = "";            /*[{]}这些位置会都报错这种成双出现其一无法断定是[]或是{}为正确,其二这种成双出现毫无实际意义*/            List<int> 整 = new List<int>(), 位 = new List<int>(); int 记 = 0;            foreach (var 元素 in 源)            {                if (比.Contains(元素.ToString()))                {                    汇 += 元素.ToString();/*新等效取字*/                    位.Add(记);                }                ++记;            }            for (int 数 = 0, 量 = 汇.Length; 数 != 量; 数++)            {                foreach (var 元素 in 比.Split(@" |/\".ToArray()))                    汇 = 汇.Replace(元素, "**");                记 = 0;                foreach (var 元素 in 汇)                {                    if (元素.ToString().Contains("*")) 整.Add(位[记]);                    ++记;                }                位 = 位.Except(整).ToList();                汇 = 汇.Replace("**", "");            }            记 = 0;            foreach (var 元素 in 汇)            {                 示 += "发现位置" + 位[记].ToString(":00“") + 元素.ToString() + "”\n\r";                ++记;            }            示 += "违成双出现错误!";


        static string 字符串影像(string 输入, string 匹配, int 数量)        {            string 输出 = "";            int 计数 = 0;            foreach (char a in 输入)            {                string b = a.ToString();                if (匹配.Contains(b))                {                    输出 += b;                    if (数量 <= ++计数) break;/*这里还写了一个数量控制*/                }            }            return 输出;        }            string 测试字符串 = "这是一组测试字符串B数字的值是800,C数字它是500,A数字是1200", 匹配="";            匹配 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ是";            string a1 = 字符串影像(测试字符串.Split(',')[0], 匹配, 1) ;            匹配 = "0123456789";            a1 += 字符串影像(测试字符串.Split(',')[0], 匹配, 10);匹配 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ是,";/*最灵活提取任意所需字符串,就好像是字符串过滤一样.*/a = 字符串影像(测试字符串, 匹配, 100);




原创粉丝点击