Как разделить строку на несколько тегов, а затем обработать ее один за другим - PullRequest
0 голосов
/ 21 ноября 2019

Я ищу способ разбить строку из нескольких тегов на отдельную строку, чтобы обработать ее одну за другой, например, когда тег строки og "[{M} sometag] [sometag] [{F} sometag]"идет, это должно отделиться в первую очередь от" [", а затем оставить только {M} sometagand процесс один за другим ... любая идея?

Ответы [ 2 ]

0 голосов
/ 22 ноября 2019

спасибо за вашу помощь

, следуя вашим советам, я сделал что-то вроде этого

    public string Extract(string in_tag)
    {
        string current  = in_tag;
        bool isCandidate = false;
        string tempstring;
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < current.Length; i++)
        {
            char c= current[i];

            if(c== '[')
            {
                isCandidate = true;
            }

            if(isCandidate)
            {
                result.Append(c);
                if(c == ']')
                {
                    tempstring = result.ToString();
                    result.Clear();
                    for (int j = 0; j < _entriesAry.Length; j++)
                    {
                        if(_entriesAry[j].IsMatchTag(tempstring))
                        {
                            current.Replace(tempstring,_entriesAry[j].ReplacedWord());
                        }
                    }
                    isCandidate = false;
                }
            }
        }

        return current;
    }

, но я не получил ожидаемых результатов

0 голосов
/ 22 ноября 2019

Вот псевдокод, чтобы дать вам направление:

Мы должны пройти через каждый символ, добавляя к строке, сказать «результат», если мы найдем какой-либо символ, который кажется хорошим кандидатом

Требуется логическое / булевое поле, скажем, «isCandidate», изначально установите для него значение false

  1. Проверьте, не является ли текущий символ '['

    я. Проверьте, является ли предыдущий символ текущего символа '['

        a. Append previous character (i.e. '[') to result
    
        b. Set isCandidate to true
    

    ii. Проверьте, является ли isCandidate истинным

    a. Check if current character is not a ']'
    
        1) Append current character (i.e. anything not a '[' or ']') to result
    
    b. Check if current character is a ']'
    
        1) Append current character (i.e. ']') to result
    
        2) Set isCandidate to false (You have found your first word closed within '[' and ']')
    
        3) Add the result string in a list or array (or any structure where you'd be maintaining your results)
    
        4) Set result to empty string
    
  2. Повторяйте для следующего символа, пока не будет достигнут конец строки

...