我正在编写一个text to speech程序,到目前为止,我已经有了一个包含应该说的内容的文本框。但是,我希望程序一次只说一个文本框中的数字。例如,文本框可能包含以下内容:
“这是一个数字3820这是另一个数字3823”
我想让程序分别说出数字,比如"This is a number 382Zero“。只有在数字之间有逗号的情况下,文本到语音服务器才会将数字分开。因此,textbox应该具有以下内容:
“这是一个数字3,8,2,0,这是另一个数字3,8,2,3”
另外,有没有一种方法可以在单词后搜索数字并更改该数字。例如,只更改单词"Account“后面的数字?示例:
“这是一个帐户3029这是一个数字3009这是另一个帐户3030”
至
“这是一个帐户3,0,2,9,这是一个数字3009这是另一个帐户3,0,3,0,”
发布于 2011-08-20 07:16:31
按空格和其他空格拆分,然后可以检查每个单词是否都是一个数字。
然后,您可以将该单词转换为字符,添加逗号,然后将其放回原处。
理想情况下,如果您的文本到语音转换解决方案支持它,请将其复制回隐藏的文本字段,然后将其用于语音,这样用户就看不到修改。
不过,为了简单起见,您可能只想使用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);
}发布于 2011-08-20 07:17:14
你有没有考虑过简单的string.Replace?即
myText = myText.Replace("1", "1,");对每个数字重复上述步骤
另外,您是否需要编辑文本框,难道您不能在将文本发送到text to speech实用程序之前直接处理文本(从文本框中提取)吗?
发布于 2011-08-20 07:24:03
此方法将解析数字,并将它们放在逗号分隔的格式中:
public string ParseNumbers(string expression)
{
return string.Join(",", System.Text.RegularExpressions.Regex.Split(expression, "[^\\d]"));
}https://stackoverflow.com/questions/7128329
复制相似问题