【问题标题】:C# compare strings - Different codepageC# 比较字符串 - 不同的代码页
【发布时间】:2009-04-24 10:05:47
【问题描述】:

我从文本文件中读取了两个要比较的字符串,当我尝试将这些文件与 winmerge 或 pspad 进行比较时,它们都显示为相同的文本字符串。如果我将它们与以下函数进行比较,则会失败:

string string1 = File.ReadAllText(@"c:\file1.txt");
string string2 = File.ReadAllText(@"c:\file2.txt");    
bool stringMatch = false;
if (string1.Equals(string2, StringComparison.InvariantCulture)){
    stringMatch = true;
}
//stringMatch is false here

经过一番搜索,似乎 " 和 ' 是不同的:

file1.txt 的内容:é"'(§è!çà)- file2.txt 的内容:é”'(§è!çà)-

有什么方法可以正确比较这两个字符串并匹配那些 " & ' 字符?

【问题讨论】:

    标签: c# string compare


    【解决方案1】:

    您可以使用System.Text.Encoding 下的方法将它们都转换为byte[] 然后比较byte[]数组

    【讨论】:

      【解决方案2】:

      看起来您想使用采用 StringComparison 的重载。 我猜考虑到当前的 senario,您想要“Ordinal”值,但您可能需要其他值之一,具体取决于您在做什么。

      http://msdn.microsoft.com/en-us/library/system.stringcomparison.aspx

      【讨论】:

        【解决方案3】:

        好吧,您在 WinMerge 或 pspad 中没有 .NET 字符串,因此在解码时很可能出现问题。你需要解释你的确切场景:

        • 数据是否在文件中(因此是 WinMerge/pspad)?
        • 如何在 .NET 中加载文件?
        • 如何在 WinMerge 等中加载文件?

        编辑:好的,根据评论 - 文件的编码是什么?您是否在任何地方的 WinMerge 中指定它? .NET 将使用 UTF-8(因为您没有指定任何其他编码)。

        【讨论】:

        • 1) 数据在 *.txt 文件中 2) 正在使用字符串 string1 = File.ReadAllText(@"c:\file1.txt") 读取文件 3) 我刚刚打开file1 并使用“与 file2.txt 的文本差异”选项。
        【解决方案4】:
        猜你喜欢
        • 2014-11-24
        • 2016-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多