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

Posted

技术标签:

【中文标题】C#:更改文本框中的数字【英文标题】:C#: Alter numbers inside the textbox 【发布时间】:2011-08-19 23:10:23 【问题描述】:

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

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

我希望程序单独说出数字,例如“这是一个数字三八二零”。仅当中间有逗号时,文本到语音服务器才会将数字分开。所以文本框应该有这个:

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

另外,有没有办法在单词后面搜索数字并更改该数字。例如只更改“帐户”一词后的数字?示例:

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

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

【问题讨论】:

【参考方案1】:

你考虑过简单的字符串替换吗?即

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

对每个数字重复

您还需要编辑文本框,您不能在将文本(从文本框中获取)发送到文本到语音实用程序之前处理它吗?

【讨论】:

这行得通,可能是我没有意识到的一个严重错误。接下来我的问题(我忘记将其添加到原始问题中,我现在将对其进行编辑)是如何编辑一些数字同时保持其余部分不变?例如“这是一个账户 3029 这是一个数字 3009”,我想要它作为“这是一个账户 3,0,2,9,这是一个数字 3009”?这是更重要的问题。 如何区分数字,即修改哪一个,不修改哪一个。如果只是第一个数字,那么詹姆斯布莱克的答案可以用来找到第一个数字,然后按照建议进行字符串替换。 数字会根据前一个单词而改变。例如,只有单词“account”之后的数字会被改变。那么有没有办法找到“帐户”这个词,然后如果下一个字符是数字,则添加一个逗号并继续这样做,直到字符不是数字? 然后我会说使用 string.Split -> 迭代到单词 account 检查下一个条目是否为数字 -> 使用 string.Replace(或正则表达式)解析它 -> 使用字符串.Join 将其全部合并回来【参考方案2】:

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

然后你可以把那个词转换成字符,加上逗号,然后放回去。

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

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

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

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

其中 value 是 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);

【讨论】:

【参考方案3】:

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

public string ParseNumbers(string expression)

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

【讨论】:

【参考方案4】:

您需要在文本框中添加一个事件(例如 KeyPress)处理程序。

TextBox1.KeyPress +=
                new KeyPressEventHandler(TextBox1_KeyPress);

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

【讨论】:

以上是关于C#:更改文本框中的数字的主要内容,如果未能解决你的问题,请参考以下文章

如何通过在 C# windows 窗体中的文本框中输入来更改图像的大小?

c#如何判断文本框中是不是是数字

c#中如何判断文本框中是不是是数字(包括小数)

c#中的文本框里怎么判断输入的内容是啥类型

asp.net怎么限制文本框输入的类型c#

c# 将从单个文本框中获取的多个值分配给标签