将文本与大量 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 语句在它发现为真时结束,但我需要一些东西来遍历我的所有文本文件并找到与我现有变量(字符串编号 207,208 等)的比较

解决方法

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

如果您真的想这样做,您可以在该方法的作用域之上创建布尔值,以检查是否已找到该值。如果有,您可以将其转到方法的下一部分。为此,您需要使用 Boolean logical operators;检查 listChrt 是否包含一个值并且该值已被找到。

不过,这段代码已经很乱了。如果您将要比较的值作为 arguments 传入,您的代码会更简单一些。像这样:

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

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

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