0

我正在制作一个文本到语音程序,到目前为止,我有一个包含应该说的话的文本框。但是,我希望程序一次说一个文本框中的数字。例如,文本框可能包含以下内容:

“这是一个数字 3820 这是另一个数字 3823”

我希望程序单独说出数字,例如“这是一个数字三八二零”。仅当中间有逗号时,文本到语音服务器才会将数字分开。因此,文本框应该有这个:

“这是一个数字 3,8,2,0,这是另一个数字 3,8,2,3,”

另外,有没有办法在一个单词之后搜索数字并更改该数字。例如只更改“帐户”一词后的数字?例子:

“这是一个帐户 3029 这是一个号码 3009 这是另一个帐户 3030”

“这是一个帐户 3,0,2,9,这是一个数字 3009 这是另一个帐户 3,0,3,0,”

4

4 回答 4

2

沿空格和其他空格拆分,然后您可以检查每个单词是否为数字。

然后您可以将该单词转换为字符,添加逗号,然后将其放回原处。

理想情况下,如果您的文本转语音解决方案支持它,请将其复制回隐藏的文本字段,然后将其用于语音,这样用户就不会看到修改。

不过,为简单起见,您可能只想使用 tryParse:

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

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

其中 value 是 a 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);
}
于 2011-08-19T23:16:30.580 回答
2

您是否考虑过一个简单的字符串。替换?IE

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

对每个数字重复

您还需要编辑文本框,您不能在将文本发送到文本到语音实用程序之前处理文本(从文本框中获取)吗?

于 2011-08-19T23:17:13.587 回答
1

此方法将解析数字并将它们以逗号分隔的格式放置:

public string ParseNumbers(string expression)
{
    return string.Join(",", System.Text.RegularExpressions.Regex.Split(expression, "[^\\d]"));
}
于 2011-08-19T23:24:03.493 回答
0

您需要在文本框中添加一个事件(例如 KeyPress)处理程序。

TextBox1.KeyPress +=
                new KeyPressEventHandler(TextBox1_KeyPress);

void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
//do your check here.
}
于 2016-01-01T20:13:18.883 回答