将文本与大量 If/else 进行比较

Comparing Text with a lot of 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()
                   );

但只获取第一个 return 行,即 number207。

因为我不明白 if else 语句在发现 true 时结束,但我需要一些东西来遍历我的所有文本文件并查找与我现有的变量(字符串编号 207、208 等)的比较

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

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

不过,这段代码已经很乱了。如果您要传递要与 arguments 进行比较的值,您的代码会稍微简单一些。像这样:

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

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

老实说,我不太确定你一开始为什么要写这篇文章,因为你不清楚,但是你开始吧。