C# 如何将C中的15300504579PRI03转换为15,300504579,PRI,03#

C# 如何将C中的15300504579PRI03转换为15,300504579,PRI,03#,c#,regex,C#,Regex,如何将15300504579PRI03转换为C#中的15,300504579,PRI,03。我必须对文本文件中的每一行这样做,如下所示 15300504579PRI03 15300504841PRI03 15300504843PRI03 15300504847PRI03 将正则表达式与组一起使用。然后解析第一个数字。您还可以使用带有正则表达式或子字符串的其他组来解析带前缀的数字。(2个)(1个)(3个)(5个)(字母)(数字) 您可以使用捕获组捕获所有需要的内容,然后在每个捕获的内容之后创建一

如何将
15300504579PRI03
转换为C#中的
15,300504579,PRI,03
。我必须对文本文件中的每一行这样做,如下所示

15300504579PRI03
15300504841PRI03
15300504843PRI03
15300504847PRI03

将正则表达式与组一起使用。然后解析第一个数字。您还可以使用带有正则表达式或子字符串的其他组来解析带前缀的数字。(2个)(1个)(3个)(5个)(字母)(数字)


您可以使用捕获组捕获所有需要的内容,然后在每个捕获的内容之后创建一个新字符串,并将其连接到

例如,您可以使用以下正则表达式:

(.{2})(.)(.{3})(.{5})(.{3})(.{2})

使用替换字符串:

$1,$2,$3,$4,$5,$6
代码:


这里有一个不依赖正则表达式的简单解决方案:

public string Convert(string input)
{
    var list = new List<char>(input.ToCharArray());
    list.Insert(2, ',');
    list.Insert(4, ',');
    list.Insert(8, ',');
    list.Insert(14, ',');
    list.Insert(18, ',');
    return new string(list.ToArray());
}

还有一种方法

using System;

public class Program
{

    public static void Main()
    {
        string input = "15300504579PRI03";
        string output = Convert(input); 
        Console.WriteLine(input);
        Console.WriteLine(output);
    }

    static public string Convert(string input)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder(input);
        int[] commasAt = {2, 3, 6, 11, 14};
        for(int i = commasAt.Length - 1; i >= 0; i--)   
        {
            sb.Insert(commasAt[i], ',');
        }
        return sb.ToString();
    }

}
这些值中是否有需要搜索的常量?例如,里面是否总是有一个“PRI”?它是否总是16个字符长,您可以根据“列”的长度简单地将其拆分?每行是否有多个值?您真的想要一个逗号分隔的列表吗?…还是想要一个数组/列表?
public string Convert(string input)
{
    var list = new List<char>(input.ToCharArray());
    list.Insert(2, ',');
    list.Insert(4, ',');
    list.Insert(8, ',');
    list.Insert(14, ',');
    list.Insert(18, ',');
    return new string(list.ToArray());
}
var input = "15300504579PRI03";
var replaced = Convert(input); //replaced will contain: 15,3,005,04579,PRI,03
using System;

public class Program
{

    public static void Main()
    {
        string input = "15300504579PRI03";
        string output = Convert(input); 
        Console.WriteLine(input);
        Console.WriteLine(output);
    }

    static public string Convert(string input)
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder(input);
        int[] commasAt = {2, 3, 6, 11, 14};
        for(int i = commasAt.Length - 1; i >= 0; i--)   
        {
            sb.Insert(commasAt[i], ',');
        }
        return sb.ToString();
    }

}