2011-08-19 24 views
0

我正在制作一个文本到语音程序,到目前为止我有一个文本框包含什么应该说。但是,我希望程序一次一个地在文本框中说出数字。例如,文本框可能包含这样的:C#:改变文本框内的数字

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

我希望程序说数字seperately如“这是一个数字三八两个零”。文本到语音服务器将分开打破数字,只有当中间有逗号时。因此,而不是文本框应该有这样的:

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

此外,有没有一种方法来搜索数字后面的数字并更改该数字。例如只更改单词“帐户”后面的数字?例如:

“这是一个帐户3029这是一个数字3009这是另一个帐户3030”

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

回答

2

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

然后你就可以这个词转换成字符,加入逗号,然后把它回。

理想的情况下,如果你的文本到语音的解决方案支持它,复制此回一个隐藏的文本字段,然后使用它来发言,所以用户看不到修改。

您可能希望只使用的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); 
} 
2

你有没有考虑一个简单的字符串。更换?即

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

重复每个号码

而且你需要编辑文本框,你就不能把它发送到文本到语音的实用程序之前,处理文本(从文本框取) ?

+0

这有效,可能是我没有意识到的一个错误。接下来我的问题(我忘记将此添加到原来的问题中,我现在要编辑它)是如何编辑一些数字,同时保持其余的不变?如“这是一个帐户3029这是一个数字3009”,我想它作为“这是一个帐户3,0,2,9,这是一个数字3009”?这是更重要的问题。 – Syam

+0

你如何区分数字,即哪一个要修改,哪一个不要。如果只是第一个数字,那么詹姆斯布莱克的答案可以用来找到第一个数字,然后按照建议进行字符串替换。 –

+0

数字根据以前的单词而改变。例如,单词“account”后面的数字将会被改变。那么有没有办法找到单词“account”,那么如果下一个字符是数字,那么给它添加一个逗号并继续这样做直到该字符不是数字? – Syam

1

此方法将解析数,并把它们在逗号分隔的格式:

public string ParseNumbers(string expression) 
{ 
    return string.Join(",", System.Text.RegularExpressions.Regex.Split(expression, "[^\\d]")); 
} 
0

你需要一个事件(如按键)处理程序添加到文本框中。

TextBox1.KeyPress += 
       new KeyPressEventHandler(TextBox1_KeyPress); 

void TextBox1_KeyPress(object sender, KeyPressEventArgs e) 
     { 
//do your check here. 
}