【发布时间】:2011-10-15 10:11:15
【问题描述】:
我有一个问题,为什么会这样。首先,我将解释发生了什么。我在RichTextBox 中找到一行并取Split 值并将其替换为相同的值但有小数限制。这是我的文件的样子:
J6 INT-00113G 227.905 174.994 180 SOIC8
J3 INT-00113G 227.905 203.244 180 SOIC8
U13 EXCLUDES 242.210 181.294 180 QFP128
但由于某种原因,当我尝试替换并将其输出回来时,我得到了这个... (数字在第 3 列和第 4 列中都出现了两次)
J6 INT-00113G 227.91227.91 174.99174.99 180 SOIC8
J3 INT-00113G 227.91227.91 203.24203.24 180 SOIC8
U13 EXCLUDES 242.21242.21 181.29181.29 180 QFP128
这是我的代码...这样做有什么错误?
string[] myLines = placementTwoRichTextBox.Text.Split('\n');
foreach (string line in myLines)
{
// Matches the entire line.
Match theMatch = Regex.Match(line, @".*");
if (theMatch.Success)
{
// Stores the matched value in string output.
string output = theMatch.Value;
// Replaces tabs and extra space with only 1 space delimiter
output = Regex.Replace(output, @"\s+", " ");
// Splits the specified regex into two different regexs.
var componentItem = output.Split(' ');
double d1 = Convert.ToDouble(componentItem[2]);
double d2 = Convert.ToDouble(componentItem[3]);
double round1 = Math.Round(d1, 2, MidpointRounding.AwayFromZero);
double round2 = Math.Round(d2, 2, MidpointRounding.AwayFromZero);
componentItem[2] = Regex.Replace(componentItem[2], @".*", round1.ToString());
componentItem[3] = Regex.Replace(componentItem[3], @".*", round2.ToString());
// Sets the RichTextBox to the string output.
newPl2ItemsRichTextBox.AppendText(componentItem[0] + " " + componentItem[1] + " " + componentItem[2] +
" " + componentItem[3] + " " + componentItem[4] + " " + componentItem[5] + "\n");
}
}
有人知道为什么会这样吗?
【问题讨论】:
-
当您删除
regex.replace(...)并仅使用compontentItem[2] = round1.ToString();时会发生什么? -
这样做的全部目的是简单地将两个数字四舍五入吗?
-
@c0deNinja: 是的,但是我已经提前解决了一些困难
标签: c# regex replace richtextbox