Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:更改文本框内的数字_C#_Textbox_Numbers_Comma_Alter - Fatal编程技术网

C#:更改文本框内的数字

C#:更改文本框内的数字,c#,textbox,numbers,comma,alter,C#,Textbox,Numbers,Comma,Alter,我正在制作一个文本到语音的程序,到目前为止,我有一个文本框,里面有应该说的话。但是,我希望程序一次一个地说出文本框中的数字。例如,文本框可能包含以下内容: “这是一个号码3820这是另一个号码3823” 我想让程序单独说出数字,比如“这是一个数字三八二零”。只有在数字之间有逗号时,文本到语音服务器才会将数字分开。因此,文本框应具有以下内容: 这是一个数字3,8,2,0,这是另一个数字3,8,2,3 还有,有没有一种方法可以在一个单词后搜索数字并更改该数字。例如,仅更改“帐户”后的数字?例如: “

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

“这是一个号码3820这是另一个号码3823”

我想让程序单独说出数字,比如“这是一个数字三八二零”。只有在数字之间有逗号时,文本到语音服务器才会将数字分开。因此,文本框应具有以下内容:

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

还有,有没有一种方法可以在一个单词后搜索数字并更改该数字。例如,仅更改“帐户”后的数字?例如:

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


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

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

然后你可以把这个词转换成字符,加上逗号,然后把它放回原处

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

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

其中值是一个
字符串

更新

阅读问题的编辑后,通过拆分成单词,然后开始将字符串转换为小写,这样您就可以轻松地进行比较,然后,只需循环遍历每个单词

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);
}
StringBuilder buf=new StringBuilder();
for(int t=0;t
沿空格和其他空格拆分,然后可以检查每个单词是否为数字

然后你可以把这个词转换成字符,加上逗号,然后把它放回原处

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

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

其中值是一个
字符串

更新

阅读问题的编辑后,通过拆分成单词,然后开始将字符串转换为小写,这样您就可以轻松地进行比较,然后,只需循环遍历每个单词

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);
}
StringBuilder buf=new StringBuilder();
for(int t=0;t
您是否考虑过一个简单的字符串。替换?即

myText = myText.Replace("1", "1,");
对每个数字重复上述步骤


另外,您是否需要编辑文本框,在将文本发送到语音转换实用程序之前,您是否可以只处理文本(从文本框中提取)呢?

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

myText = myText.Replace("1", "1,");
对每个数字重复上述步骤


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

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

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

此方法将解析数字并将其置于逗号分隔格式:

public string ParseNumbers(string expression)
{
    return string.Join(",", System.Text.RegularExpressions.Regex.Split(expression, "[^\\d]"));
}
您需要向文本框中添加事件(例如按键)处理程序

TextBox1.KeyPress +=
                new KeyPressEventHandler(TextBox1_KeyPress);

void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
//do your check here.
}
您需要向文本框中添加事件(例如按键)处理程序

TextBox1.KeyPress +=
                new KeyPressEventHandler(TextBox1_KeyPress);

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

我接下来的问题(我忘了把这个添加到原来的问题中,我现在要编辑这个问题)是如何编辑一些数字,而保持其余的不变?例如“这是一个帐户3029这是一个数字3009”,我希望它是“这是一个帐户3,0,2,9,这是一个数字3009”?这是一个更重要的问题。你如何区分数字,即修改哪一个和不修改哪一个。如果只是第一个数字,那么可以使用James Black的答案来查找第一个数字,然后按照建议替换字符串。数字会根据前一个单词进行更改。例如,仅单词后的数字“account”会被更改。那么有没有办法找到“account”这个词呢?如果下一个字符是一个数字,那么在它上面加一个逗号,直到这个字符不是一个数字为止?然后我会说使用string.Split->iterate to the word account检查下一个条目是否是一个数字->使用string.Replace(或正则表达式)解析它->使用string.Join将其全部合并回去,这很可能是我没有意识到的一个严重错误。我接下来的问题(我忘了将此添加到原始问题中,我现在将对其进行编辑)是如何编辑一些数字,而保持其余数字不变?例如“这是一个帐户3029这是一个数字3009”,我希望它作为“这是一个帐户3,0,2,9,这是一个数字3009"?这是一个更重要的问题。你如何区分数字,即修改哪一个和不修改哪一个。如果只是第一个数字,那么可以使用James Black的答案来查找第一个数字,然后按照建议替换字符串。数字会根据前一个单词进行更改。例如,仅单词后的数字“account”会被更改。那么有没有办法找到“account”这个词呢?如果下一个字符是一个数字,那么在它上面加一个逗号,直到这个字符不是一个数字为止?然后我会说使用string.Split->iterate to the word account检查下一个条目是否是一个数字->使用string.Replace(或正则表达式)解析它->使用string.Join将其全部合并回