Игнорирование символов в файле читать c # - PullRequest
0 голосов
/ 25 апреля 2018

Я читаю файл для школы и пытаюсь игнорировать акценты. Я использовал CultureInfo, но он не работает для меня, есть ли другой способ ?? (пример .... Клементина = Клементина)

    public static void SearchName()
    {
        string lineIn = String.Empty;
        string[] BoatInfo = new string[5];
        Console.WriteLine();

        FileStream fs = new FileStream(@"FrenchMF.txt", FileMode.Open, FileAccess.Read);
        StreamReader inputStream = new StreamReader(fs);
        lineIn = inputStream.ReadLine();

        string input = String.Empty;
        Console.WriteLine();

        Console.Write("Enter Vessel Name :");
        input = Console.ReadLine().ToLower().Trim();

        string CheckInput = String.Empty;



        while(lineIn != null)
        {
            BoatInfo = lineIn.Split(',');
            CheckInput = BoatInfo[0].ToLower();

            if (input.Equals(CheckInput)) 
            {
                Console.WriteLine("its a Match" );

            }
            else
            {
                Console.WriteLine("No Match Found!! ");
                return; 


            }      
        }
    }

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018
string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace);

См. Этот ответ

Конечно, вы можете создать свой собственный CultureInfo - вам не нужно использовать CurrentCulture:

string.Compare(s1, s2, new CultureInfo("fr-FR"), CompareOptions.IgnoreNonSpace);
0 голосов
/ 25 апреля 2018

Вы можете создать метод расширения для строки:

public static string RemoveDiacritics(this string @this) {
    var normalizedString = @this.Normalize(System.Text.NormalizationForm.FormD);
    var stringBuilder = new StringBuilder();

    foreach (var c in normalizedString) {
        var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
        if (unicodeCategory != UnicodeCategory.NonSpacingMark) {
            stringBuilder.Append(c);
        }
    }

    return stringBuilder.ToString().Normalize(NormalizationForm.FormC);
}

И тогда вы можете сказать input.RemoveDiacritics().

Чтобы метод расширения работал, вы должны поместить его в статический класс:

public static class ScorableExtensions {

    public static string RemoveDiacritics(this string @this) {
        //the one above
    }
}
...