C #: изменить цифры внутри текстового поля - PullRequest
0 голосов
/ 20 августа 2011

Я делаю программу преобразования текста в речь, и до сих пор у меня есть текстовое поле, содержащее то, что должно быть сказано. Однако я хотел бы, чтобы программа произносила числа внутри текстового поля по одному. Например, текстовое поле может содержать это:

"Это число 3820 Это другое число 3823"

Я хочу, чтобы программа произносила число отдельно, например, «Это число три восемь восемь ноль». Сервер преобразования текста в речь будет разбивать числа по отдельности, только если между ними будут запятые. Поэтому вместо этого текстовое поле должно иметь следующее:

"Это число 3,8,2,0, Это другое число 3,8,2,3"

Кроме того, есть ли способ поиска чисел после слова и изменения этого числа. Например изменить только цифры после слова «Аккаунт»? Пример:

"Это аккаунт 3029 Это номер 3009 Это другой аккаунт 3030"

до

"Это аккаунт 3,0,2,9, это номер 3009 Это еще один аккаунт 3,0,3,0"

Ответы [ 4 ]

2 голосов
/ 20 августа 2011

Вы рассматривали простую строку. Заменить? т.е.

myText = myText.Replace("1", "1,");

Повторите для каждого номера

Также вам нужно отредактировать текстовое поле, вы не можете просто обработать текст (взятый из текстового поля) перед отправкой его в утилиту преобразования текста в речь?

2 голосов
/ 20 августа 2011

Разделите пробелы и другие пробелы, затем вы можете проверить, является ли каждое слово числом.

Затем вы можете преобразовать это слово в символы, добавить запятые, а затем вставить его обратно.

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

Вы можете просто использовать tryParse, для простоты:

Http: //msdn.microsoft.com/en-us/library/f02979c7.aspx

bool result = Int32.TryParse(value, out number);

Где значение String.

Обновление

После прочтения редактирования вопроса, разделив его на слова, начните с преобразования строки в нижний регистр, чтобы вы могли легко сравнить, а затем просто перебрать каждое слово.

StringBuilder buf = new StringBuilder();
for(int t = 0; t < wordarray.length - 1; t++) {
  String s = wordarray[t];
  if (numberWord.contains(s) && isWordNumber(wordarray[t + 1]) {
      s = addCommas(wordarray[t + 1]);
  }
  buf.append(' ').append(s);
}
1 голос
/ 20 августа 2011

Этот метод проанализирует числа и поместит их в разделенный запятыми формат:

public string ParseNumbers(string expression)
{
    return string.Join(",", System.Text.RegularExpressions.Regex.Split(expression, "[^\\d]"));
}
0 голосов
/ 01 января 2016

Вам необходимо добавить обработчик события (например, KeyPress) в текстовое поле.

TextBox1.KeyPress +=
                new KeyPressEventHandler(TextBox1_KeyPress);

void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
//do your check here.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...