您的位置:首页 > 编程语言 > C#

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

2009-07-14 18:24 267 查看
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);




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐