C# - 文本框添加到字符串值&重复检查/拒绝

时间:2011-07-18 19:19:39

标签: c# textbox duplicates addition concat

我有一个类似于此的文本文档:

R.D.    P.N.      X       Y        Rot  Pkg
L5      120910    64.770  98.425   180  SOP8                    
L4      120911   -69.850  98.425   180  SOIC12                    
L10     120911   -19.685  83.820   180  SOIC10                    
L9      120911    25.400  83.820   180  0603                    
L5      120910    62.484  98.425   180  SOP8     
..      ......    ......  ......   ..   .......

我想有两个文本框(标记为 X Y )从用户获取输入(只有正数或负数的数字,可以是小数。 ex.-124.893

使用这些文本框,我想在使用line.Split(" ");后找到字符串中第3和第4个点下的值。对于我想要的值以上的数据集,这意味着:

 64.770  98.425 
-69.850  98.425
-19.685  83.820
 25.400  83.820
 62.484  98.425
 ......  ......

使用这些值,我想从 X Y 文本框中获取输入,并将其添加到这些值中。因此,如果用户在X文本框中输入“10.552”,在Y文本框中输入“-140.123”,则新值将为:

 75.322  -41.698
-59.298  -41.698
-9.133   -56.303
 35.952  -56.303
 73.036  -41.698

我想解决的另一个问题与该行有重复的“R.D.”有关。值。因此,在上面的示例中, 两条 行与需要更改的 “L5” 结合在一起。找到第二个值后,它会将第一个找到的值更改为 L5-1 ,将第二个值更改为 L5-2 。这不仅限于2个值,而是无限量的“ - #”。

所以最终文本看起来像 (加上和连接在一起)

R.D.    P.N.      X       Y         Rot  Pkg
L5-1    120910    75.322  -41.698   180  SOP8                    
L4      120911   -59.298  -41.698   180  SOIC12                    
L10     120911   -9.133   -56.303   180  SOIC10                    
L9      120911    35.952  -56.303   180  0603                    
L5-2    120910    73.036  -41.698   180  SOP8     
..      ......    ......  ......   ..   .......

问题:

  • 如何从文本框中获取输入(正数,正数,十进制数,仅限数字)并将其添加到字符串中的值,然后将该新值重新放回字符串中的相同位置?
  • 如何找到已使用相同值启动的行?
    • 找到这一行时,如何将“-1”,“ - 2”,“ - 3”等连接到值?

2 个答案:

答案 0 :(得分:1)

您可以拥有一个对象,该对象具有从文本文档解析的强类型数值数据,使用数值数据类型在内存中进行所有计算,然后再将它们转换为文本,而不是处理文本数据并始终转换数据类型显示值。

对于重复值的编号,您可以将Dictionary<string,int>的RD值作为键,将值作为它在RD列中出现的次数。您可以使用相同类型的另一个字典,但它会跟踪分配的最后一个数字。当您浏览项目列表以显示它们时,您可以检查字典,从第一个字典中的值中减去一个字典,在第二个字典中将值加1,并将结果连接到RD值({{1} })。

答案 1 :(得分:0)

除了@marks回答我会说在你的具体情况下,你可以有一个数据结构,但你也应该非常注意浮点数。我不知道你需要多高的准确度,但是例如在文件中你可以像整数一样存储它们,所以当前值乘以1000.当用户插入一个浮点数乘以1000并且在加/后减去或等等。当你要向用户展示时,请将其显示为1000.

希望这有帮助。

问候。