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#语言,有的用钱买的控件,看太多了眼累,还是自己想,自己写好了。
妙思写出后发现原来这么简单。
csharp
string 源 = ")((){[]}{[()]}({}[])({)({)}({[)}][[", 比 = "() {} []", 汇 = "";
foreach (var 元素 in 源)
if (比.Contains(元素.ToString()))
汇 += 元素.ToString();/*新等效取字*/
比.Split(@"|/\".ToArray())/*可以使用连续字符串*/
csharp
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";
++记;
}
示 += "违成双出现错误!";
csharp
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);