用字符分割和替换字符串

时间:2018-10-17 20:52:26

标签: c# split

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

string text = "&2&LL&1&likk&3&";

我需要提取值2, 1, 3并插入List<string>的相应索引。

该列表包含10个元素:

0 - A
1 - B
2 - C
3 - D
...
9 - J

最后,当我将list元素替换为字符串时,应将其打印为 C LL B likk D 。我该怎么办?

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

string[] xx = text.Split('&');

4 个答案:

答案 0 :(得分:1)

尝试一下:

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

使用“ 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 ); 

答案 1 :(得分:1)

正则表达式替代(17与'A' - '0'的区别):

var result = Regex.Replace("&2&LL&1&likk&3&", "&[0-9]&", m => (char)(m.Value[1] + 17) + "");

答案 2 :(得分:0)

嗨,您可以尝试这样的事情

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

答案 3 :(得分:-1)

您应该使用正则表达式来执行此操作,因为正则表达式很有趣!

&\ 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 );

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