C# 拆分并用字符替换字符串

C# 拆分并用字符替换字符串,c#,split,C#,Split,我需要提取特殊字符和之间的值 string text = "&2&LL&1&likk&3&"; 我需要提取值2,1,3,并插入列表的相应索引 该列表包含10个元素: 0 - A 1 - B 2 - C 3 - D ... 9 - J 最后,当我将list元素替换为字符串时,它应该打印为CLLBlikkD。我该怎么做 我尝试按如下方式进行拆分:但是,它仅使用&符号进行拆分 string[] xx = text.Split('&'); 试

我需要提取特殊字符
之间的值

string text = "&2&LL&1&likk&3&";
我需要提取值
2,1,3
,并插入
列表的相应索引

该列表包含10个元素:

0 - A
1 - B
2 - C
3 - D
...
9 - J
最后,当我将list元素替换为字符串时,它应该打印为CLLBlikkD。我该怎么做

我尝试按如下方式进行拆分:但是,它仅使用&符号进行拆分

string[] xx = text.Split('&');
试试这个:

        List<string> f = new List<string> ( ) { "A", "B", "C", "D", "E", "F", "G" };
        string text = "&2&LL&1&likk&3&";
        for ( int i = 0; i < f.Count; i++ )
        {
            text = text.Replace ( i.ToString ( ), f[ i ] );
        }
        text=text.Replace ( "&", "" );
        Console.WriteLine ( text ); 
listf=新列表(){“A”、“B”、“C”、“D”、“E”、“f”、“G”};
字符串文本=“&2&LL&1&likk&3&”;
对于(int i=0;i
用“FOR”遍历列表中的所有值,并用要替换的值重新指定文本的值

已编辑

        List<string> f = new List<string> ( ) { "A", "B", "C", "D", "E", "F", "G" };
        string text = "&2&LL&1&likk&3&";
        for ( int i = 0; i < f.Count; i++ )
        {
            text = text.Replace ($"&{ i.ToString ( )}&", f[ i ] );
        }
        Console.WriteLine ( text ); 
listf=新列表(){“A”、“B”、“C”、“D”、“E”、“f”、“G”};
字符串文本=“&2&LL&1&likk&3&”;
对于(int i=0;i
嗨,你可以试试这样的东西

 string text = "&2&LL&1&likk&3&";
        string[] xx = text.Split('&');
        string text2 = "";
        string[] abc = { "A","B","C","D","E","F","G","H","I","J" };
        for (int i = 0; i < xx.Length; i++)
        {
            text2 += xx[i];
        }
        for (int i = 0; i < abc.Length; i++)
        {
            text2 = text2.Replace(""+i, abc[i]);
        }
        MessageBox.Show(text2);
string text=“&2&LL&1&likk&3&”;
字符串[]xx=text.Split('&');
字符串text2=“”;
字符串[]abc={“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”、“I”、“J”};
对于(int i=0;i
您应该使用正则表达式来实现这一点,因为正则表达式很有趣

&\d&将匹配符号之间的所有数字。考虑到你暗示字母和数字应该映射在一起,我们可以采用Henocs答案来使用正则表达式获得加分

List<string> f = new List<string> ( ) { "A", "B", "C", "D", "E", "F", "G" };
    string text = "&2&LL&1&likk&3&";
    for ( int i = 0; i < f.Count; i++ )
    {
        text = text.RegexReplace ( text, "&" + i + "&", f[ i ] );
    }
    Console.WriteLine ( text );
listf=新列表(){“A”、“B”、“C”、“D”、“E”、“f”、“G”};
字符串文本=“&2&LL&1&likk&3&”;
对于(int i=0;i

通过创建一个&(目标数字)&的正则表达式,并用字符串列表中的一个字母替换它,我们将替换整个块,而不仅仅是数字。

正则表达式替代方案(17是与
'a'-'0'的区别):


你不能做一个简单的循环,替换
&i&
其中
i
是循环的索引吗?请检查答案的版本,列表中的索引值替换了&++&这是一个很好的答案,但它对大于9的数字有效吗?
var result = Regex.Replace("&2&LL&1&likk&3&", "&[0-9]&", m => (char)(m.Value[1] + 17) + "");