2011-08-19 4 views
0

저는 음성 프로그램에 텍스트를 만들고 있습니다. 지금까지 말해야 할 내용이 들어있는 텍스트 상자가 있습니다. 그러나이 프로그램은 한 번에 하나씩 텍스트 상자 안의 숫자를 말하고 싶습니다. 예를 들어 텍스트 상자이 포함될 수 있습니다C# : 텍스트 상자 안의 숫자를 변경하십시오.

"이것은이 다른 번호 3823을 나타내는 숫자 3820은"

나는 "이것은 세 번째 여덟 개의 제로는"같은 프로그램이 수는 별도로 같은 말을합니다. 스피치 서버에 문자를 입력하면 그 사이에 쉼표가있는 경우에만 숫자가 분리됩니다. 그래서 그 대신 텍스트 상자이 있어야한다 :

또한

"이 숫자 3,8,2,0이며,이 다른 번호 3,8,2,3이다", 검색 할 수있는 방법이있다 숫자 다음에 숫자를 입력하고 그 숫자를 변경하십시오. 예를 들어 "Account"라는 단어 다음에 오는 숫자 만 변경합니까? 예 :

에 "이 문제는이 다른 계정 3030 번호 3009입니다 계정 3029입니다" "이 계정 3,0,2,9이고,이 숫자 3009입니다 이것은 다른 계정입니다 3,0,3,0, "

답변

2

공백과 다른 공백을 따라 분할하면 각 단어가 숫자인지 확인할 수 있습니다.

그럼 당신은 다음에 다시 넣어 쉼표를 추가, 문자로 그 단어를 변환 할 수 있습니다. 텍스트 음성 변환 솔루션을 지원하는 경우

가 가

이상적으로는,이 복사 다시 숨겨진 텍스트 필드에 다음 연설을 위해 그것을 사용하십시오, 그래서 사용자는 수정을 보지 않습니다.

그냥 간단하게하기 위해,하지만 tryParse 사용할 수 있습니다

: 값이 String입니다

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

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

.

업데이트

단어로 분할하여 질문에 편집을 읽고 나면, 당신은 쉽게 비교할 수 있도록 각 단어를 통해, 다음, 소문자를 그냥 루프를 문자열로 변환 시작합니다.

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

그건 잘 모르겠지만 제 부분에서 잘 작동했습니다. 다음 질문 (내 질문을 원래 질문에 추가하는 것을 잊어 버렸습니다. 지금 편집 할 것입니다)은 나머지 숫자를 변경하지 않고 수정하는 방법입니다. "This is a account 3029 이것은 숫자 3009입니다."와 같이 "This is a account 3,0,2,9, this is a number 3009"? 그것은 더 중요한 질문이었습니다. – Syam

+0

숫자를 어떻게 구별 할 것인가? 어느 것을 수정할 것인가? 어떤 것을 수정할 것인가? 첫 번째 숫자 일 경우 James Black의 대답을 사용하여 첫 번째 숫자를 찾은 다음 제안 된대로 문자열을 대체하십시오. –

+0

숫자는 이전 단어에 따라 변경됩니다. 예를 들어, 단어 "계정"다음의 숫자 만 변경됩니다. 그렇다면 "계정"이라는 단어를 찾는 방법이 있습니까? 다음 문자가 숫자 인 경우 쉼표를 추가하고 문자가 숫자가 아닐 때까지 계속하십시오. – 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. 
} 
관련 문제