我有一个类似于此的文本文档:
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
.. ...... ...... ...... .. .......
的问题: 的
答案 0 :(得分:1)
您可以拥有一个对象,该对象具有从文本文档解析的强类型数值数据,使用数值数据类型在内存中进行所有计算,然后再将它们转换为文本,而不是处理文本数据并始终转换数据类型显示值。
对于重复值的编号,您可以将Dictionary<string,int>
的RD值作为键,将值作为它在RD列中出现的次数。您可以使用相同类型的另一个字典,但它会跟踪分配的最后一个数字。当您浏览项目列表以显示它们时,您可以检查字典,从第一个字典中的值中减去一个字典,在第二个字典中将值加1,并将结果连接到RD值({{1} })。
答案 1 :(得分:0)
除了@marks回答我会说在你的具体情况下,你可以有一个数据结构,但你也应该非常注意浮点数。我不知道你需要多高的准确度,但是例如在文件中你可以像整数一样存储它们,所以当前值乘以1000.当用户插入一个浮点数乘以1000并且在加/后减去或等等。当你要向用户展示时,请将其显示为1000.
希望这有帮助。
问候。