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 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);
相关文章推荐
- NSString作业2:取出字符串“123-456-789-000”中的数字部分,组成一个新的字符串输出
- C# 上机题 写一个静态方法,输出字符串中大小写字母、数字和其他字符个数
- struts2标签循环一个数字及判断字符串相等的用法
- c#你怎么判断一个字符串是否是数字?(转)
- 在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下两种方法来实现。 【方法一】:使用 try{} catch{} 语句。 我们可以在try语句块中试图
- 取出一个字符串中字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)..(注意,字母出现的次数,要过滤掉数字)
- c#你怎么判断一个字符串是否是数字?
- [C#新手入门十] 如何判断一个字符串中值不包含字母,数字和“_”
- C# 判断一个字符串是否数字开头
- 【转】C#判断一个字符串是否是数字
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- C#控制台基础 得到一个字符串中数字与字母的个数
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- 2.取出符串“123-456-789-000”中的数字部分,组成一个新的字符串输出
- 编写代码,由用户输入一个字符串,使用foreach循环遍历出此字符串中有多个字母,多少个数字,多少个标点
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- C# 判断一个字符串是否数字开头
- loner_li 机试题 由用户输入一个字符串,使用foreach循环遍历出此字符串中有多个字母,多少个数字,多少个标点
- java循环练习:输入一个字符串,统计该字符串中分别包含多少个数字,多少个字母,多少个其他字符
- C#--输入一个由若干字符组成的字符串,输出其中的大写字母、小写字母、数字和其他字符的个数。