如何修改 linq 索引号

本文关键字:linq 索引 修改 何修改 | 更新日期: 2023-09-27 18:33:17

如何修改数组中的索引号,使其前面的 0 表示数字 1 - 9。但是,我希望数字 10 最多保持不变。

这是从 tb1.text 获取数据时调试的原始数据

"1ABC'r'n2ABC'r'3ABC'r'4ABC'r'n5ABC" 

这就是我想将数据存储在本地数据库中的方式。

"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);

如何修改 linq 索引号

由于索引已经是输入数据的一部分,因此您需要从那里读取它(并使用该索引)或从那里删除它(并使用您可以在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);

如果你只想在字符串中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;
                }));