【问题标题】:How to Compare a string to each item in a file?如何将字符串与文件中的每个项目进行比较?
【发布时间】:2014-06-25 11:36:05
【问题描述】:

或多或少,我需要将一组字符串与文件中的每个项目进行比较。我已经创建了比较方法,但是调用它给我带来了麻烦。方法是这样设置的:

public static double CompareStrings(string str1, string str2){ //code here }

我知道System.IO.File.ReadAllLines 会将每一行转换为字符串并放入数组中。那么我可以将每个与预定义的字符串进行比较吗?注意:我不是在查看文件是否只包含字符串。 感谢您的帮助!

【问题讨论】:

  • "那么我可以将它们中的每一个与预定义的字符串进行比较吗?" - - 是的你可以!我的 cookie 在哪里?
  • @zerkms 你能告诉我怎么做吗? :P
  • “比较字符串”是不够的需求解释。有数百种比较字符串的方法。

标签: c# arrays string comparison .net


【解决方案1】:

数组 -> AllLines

mystring -> 你的预定义字符串

for (int i = 0; array[i]; i++){

CompareStrings(mystring, array[i]);

}

【讨论】:

    【解决方案2】:

    在我看来,你应该从重新定义方法签名开始:

    public static int CompareStrings(string[] originalSet, params string[] compareToSet)
    

    然后进行计算:

    public static int CompareStrings(string[] originalSet, params string[] compareToSet)
    {
        int hits = 0;
        foreach (string s in originalSet)
        {
            if (compareToSet.Contains(s))
            {
                hits++;
            }
        }
    
        return hits;
    }
    

    你可以这样称呼它:

    int hits = CompareStrings( File.ReadAllLines(filename)
                             , "match1"
                             , "match2"
                             );
    

    或者像这样:

    int hits = CompareStrings( File.ReadAllLines(filename)
                             , File.ReadAllLines(filenameOfFileWithMatchList)
                             );
    

    或者像这样:

    List<string> matchList = new List<string>();
    matchList.Add("match1");
    matchList.Add("match2");
    
    int hits = CompareStrings( File.ReadAllLines(filename)
                             , matchList.ToArray()
                             );
    

    【讨论】:

    • 在这种情况下,double 返回类型看起来完全是矫枉过正,只是令人困惑
    • @zerkms:我也是,但它在原始问题中。将恢复为int
    猜你喜欢
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2017-09-10
    相关资源
    最近更新 更多