2011-08-19 55 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. 
}