Как сделать так, чтобы 2 символа были представлены одной буквой? - PullRequest
1 голос
/ 06 июля 2019

Я создаю игру, которая будет на валлийском языке. Цель игры - помочь детям научиться писать определенные слова. Таким образом, в основном, когда слово произнесено, они должны произносить слово по буквам, щелкая правильные буквы на экране.

Задача, с которой я сталкиваюсь, - это сравнение символов слова с выбранной буквой. Очевидно, им придется выбирать буквы в правильном порядке. Поскольку валлийский алфавит содержит 8 букв , которые имеют 2 символа каждый, т.е. Ch, Dd, Ll etc, компилятор будет читать их как отдельные символы, т.е. 'C' вместо 'Ch'. Примером может служить слово 'Gwallt' (hair in English). Компилятор будет думать, что буквы L - это 2 отдельных вхождения буквы L. На самом деле это одна буква на валлийском языке .... Так что, когда пользователь нажимает 'Ll' на экране для его написания, он выдаст ошибку .... как Могу ли я избежать этого? Есть ли какое-то правило, которое я мог бы установить? У меня есть все различные слова, хранящиеся в массиве. Надеюсь, что вышесказанное имело смысл?

Ответы [ 2 ]

1 голос
/ 06 июля 2019

Разделение с помощью регулярных выражений может вам помочь.

//ch is the first element, ll an other char or any char from a to z
//Ignoring case and multi line
private Regex tokenizerRegex = new Regex(@"(ch|ll|[a-z])", RegexOptions.IgnoreCase | RegexOptions.Multiline);
//split your input string
//split returns an array of strings
var tokensText = tokenizerRegex.Split("channel");
//print results
tokensText.ToList().ForEach(i => Console.WriteLine(i.ToString()));

Результат:

> empty string
> ch
> empty string
> a
> empty string
> n
> empty string
> n
> empty string
> e
> empty string
> l
> empty string
0 голосов
/ 06 июля 2019

Я думаю, что проблема с кодировкой символов. Я бы посоветовал использовать правильный код Unicode для конкретных орграфов. .NET Кодировка символов Латинский скрипт в Unicode

...