Разделить и заменить строку на символ - PullRequest
0 голосов
/ 17 октября 2018

Мне нужно извлечь значения, которые находятся между специальными символами &.

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

Мне нужно извлечь значение 2, 1, 3 и вставить соответствующий индекс List<string>.

Список содержит 10 элементов:

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

Наконец, когда я подставляю элемент списка в строку, он должен быть напечатан как C LL B likk D .Как я могу это сделать?

Я попытался выполнить разбиение следующим образом: Но оно разделяется только с помощью знака &.

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

Ответы [ 4 ]

0 голосов
/ 18 октября 2018

Альтернативное выражение (17 - это отличие от 'A' - '0'):

var result = Regex.Replace("&2&LL&1&likk&3&", "&[0-9]&", m => (char)(m.Value[1] + 17) + "");
0 голосов
/ 18 октября 2018

Привет, ты можешь попробовать что-то вроде этого

 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);
0 голосов
/ 18 октября 2018

Вы должны использовать регулярные выражения, чтобы сделать это, потому что регулярное выражение это весело!

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

Создавая регулярное выражение & (целевая цифра) & и заменяяэто буквой из нашего списка строк, мы заменим весь блок, а не только число.

0 голосов
/ 18 октября 2018

попробуйте это:

        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» и переназначить значение текста значением для замены

EDITED

        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 ); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...