首页 > 解决方案 > 将文本与大量 If/else 进行比较

问题描述

我有在两个词之间搜索特定词的变量

> string number207 = FindTextBetweenWithout(fileTTT, "\n207 ", " 20");
> string number208 = FindTextBetweenWithout(fileTTT, "\n208 ", " 20");
> string number209 = FindTextBetweenWithout(fileTTT, "\n209 ", " 20");
> string number219 = FindTextBetweenWithout(fileTTT, "\n219 ", " 20"); 

在我有一个包含数字的文本文件之后:

>207
>208
>209
>1402
>132

用这种方法读取的这个数字

 var listChrt = File.ReadAllText(textBox2.Text); 

所以在我尝试比较这些数字之后

        string compare()
        {
            if (listChrt.Contains("207"))
            {
                return number207;        
            }
            if (listChrt.Contains("208"))
                {
                return number208;
            }
            if (listChrt.Contains("1402"))
             {
                return number1402;
             } 

            return " ";
        }

我试着把它传递给 TextBox

 richTextBox1.Text = (
              dss()
                   );

但只获得第一条返回线,即 number207。

因为我不明白 if else 语句在它发现为真时结束,但我需要一些东西来遍历我的所有文本文件并找到与我现有的变量进行比较(字符串 number207,208 等)

标签: c#if-statementcompare

解决方案


当您的代码调用compare()时,它会检查列表是否包含“207”。如果是,则返回该值;该方法停在那里。

如果您真的想这样做,您可以在该方法的范围之上创建布尔值,以检查是否已找到该值。如果有,您可以让它进入方法的下一部分。您需要为此使用布尔逻辑运算符;检查是否listChrt包含一个值并且该值已被找到。

虽然,这段代码已经很乱了。如果您将要比较的值作为参数传递,您的代码会更简单一些。像这样的东西:

string compare(string baseValue, string valueToCompareAgainst)
 {
       if (baseValue.Contains(valueToCompareAgainst)
          {
             return valueToCompareAgainst;
          }
       else
         {
             return " ";
         }
 }

然后,您可以多次调用该方法,多次提供baseValue字符串以及不同的值。或者,更好的方法是将所有要比较的值放在一个string[]数组中或List<string>迭代它们。

老实说,我不太确定你为什么要写这个,因为你不清楚,但你去吧。


推荐阅读