Регулярное выражение символов Юникода в строке - PullRequest
4 голосов
/ 14 мая 2010

Я работаю в C #, выполняя некоторую работу по распознаванию текста, и извлек текст, с которым мне нужно работать. Теперь мне нужно проанализировать строку с помощью регулярных выражений.

string checkNum;
string routingNum;
string accountNum;
Regex regEx = new Regex(@"\u9288\d+\u9288");
Match match = regEx.Match(numbers);
if (match.Success)
    checkNum = match.Value.Remove(0, 1).Remove(match.Value.Length - 1, 1);
regEx = new Regex(@"\u9286\d{9}\u9286");
match = regEx.Match(numbers);
if(match.Success)
    routingNum = match.Value.Remove(0, 1).Remove(match.Value.Length - 1, 1);
regEx = new Regex(@"\d{10}\u9288");
match = regEx.Match(numbers);
if (match.Success)
    accountNum = match.Value.Remove(match.Value.Length - 1, 1);

Проблема в том, что строка содержит необходимые символы Юникода, когда я выполняю .ToCharArray() и проверяю содержимое строки, но кажется, что она никогда не распознает символы Юникода, когда я анализирую строку, ища их. Я думал, что строки в C # по умолчанию были Unicode.

Ответы [ 3 ]

3 голосов
/ 14 мая 2010

Я понял это. Я использовал десятичные значения вместо шестнадцатеричного кода Другими словами, вместо использования \u9288 and \u9286 я должен был использовать \u2448 and \u2446 http://www.ssec.wisc.edu/~tomw/java/unicode.html#x2440

Спасибо, ребята, за то, что направили меня в правильном направлении.

1 голос
/ 14 мая 2010

Эта строка:

match.Value.Remove(0, 1).Remove(match.Value.Length - 1, 1);

вызывает исключение, потому что результирующая длина от первого Remove меньше, чем оригинал match.Value.Length.

Я предлагаю вам использовать группы для извлечения значения. Пример:

Regex regEx = new Regex(@"\u9288(\d+)\u9288");
Match match = regEx.Match(numbers);
if (match.Success)
    checkNum = match.Groups[1].Value;

С этим я могу правильно извлечь значения.

0 голосов
/ 14 мая 2010

Строка в .NET в кодировке UTF-16 .

Кроме того, движки Regex сопоставляются не с символами Unicode, а с кодовыми точками Unicode. Смотрите этот пост .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...