如何修改数组中的索引号,使其前面的数字为1 - 9。 但是,我希望数字10保持不变。
这是从tb1.text
获取数据时调试的原始数据"1ABC\r\n2ABC\r\3ABC\r\4ABC\r\n5ABC"
这就是我想将数据存储在localDB中的方式。
"01ABC\r\n02ABC\r\03ABC\r\04ABC\r\n...10ABC"
这是我到目前为止所拥有的。
var lines = tb1.Text.Split('\n').Select((line, index) => "YRZ"+(index + 01) + line).ToArray();
var res = string.Join("\n", lines);
答案 0 :(得分:1)
由于索引已经是输入数据的一部分,因此您需要从那里读取它(并使用该索引)或从那里删除它(并使用Select
时可以获得的索引)。您可以使用正则表达式解析它。将索引隔离后,可以使用.ToString("00")
添加前导零。
var regex = new Regex(@"^(\d+)(.*)$");
var result = string.Join("\r\n",
tb1.Text.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)
.Select(x =>
{
var m = regex.Match(x);
return int.Parse(m.Groups[1].Value).ToString("00") + m.Groups[2].Value;
}));
Debug.Assert("01ABC\r\n02ABC\r\n03ABC\r\n04ABC\r\n10ABC" == result);
答案 1 :(得分:-1)
如果您只想在字符串中使用0
,为什么不将其更新为字符串:
var text = "1ABC\r\n2ABC\r\n3ABC\r\n4ABC\r\n5ABC";
var lines = text.Split('\n').ToList();
var withZero = lines.Select(
(line, i) =>
{
var newVal = i < 9 ? string.Format("0{0}", line) : line;
return newVal;
});
var result = string.Join("\n", withZero);
或者以更简洁的形式:
var result = string.Join("\n", text.Split('\n').Select(
(line, i) =>
{
var newVal = i < 9 ? string.Format("0{0}", line) : line;
return newVal;
}));