C # разделяет строку по последнему пробелу перед каждым символом равенства (=) - PullRequest
0 голосов
/ 23 ноября 2018

Как разделить строку по последнему пробелу перед символом '='

Например, у меня есть строка ввода ниже и разделить по пробелу:

string inputName = "id=4 issue=critical level project=ABC group=Group A";
string[] values = inputName.Split(' ');

Результат будет какниже, что неправильно:

id=4 
issue=critical 
level 
project=ABC 
group=Group 
A

Но то, что я ожидал, это:

id=4 
issue=critical level 
project=ABC 
group=Group A

Так что я планирую найти символ '=' и затем разделить его на последний пробел перед каждым символом'='

Ответы [ 4 ]

0 голосов
/ 23 ноября 2018

Ниже также будет работать для вас, , но для этого я только что добавил один пробел после вашего EOS (Конец строки) .

string s = "id=4 issue=critical level project=ABC group=Group A";
            s = s.Trim();
            s += " "; //TO MATCH THE REGEX
            Regex regex = new Regex(@"\w+=[\w\s]+\s");

             foreach (Match match in regex.Matches(s))
        {
            Console.WriteLine(match.Value);
        }
0 голосов
/ 23 ноября 2018

Ответ Тана Нгуйона самый лучший.Не зная регулярных выражений, я бы сделал что-то вроде следующего:

var byEquals = inputName.Split("=");
var result = new Dictionary<String, String>();
for(int i = 0; i < byEquals.Length -1; i++)
{
result[byEquals[i].Split(" ").Last()] = String.Join(" ", byEquals[i + 1].Reverse().Skip(1).Reverse())
}
0 голосов
/ 23 ноября 2018

ПОПРОБУЙТЕ

string inputName = "id=4 issue=critical level project=ABC group=Group A";
string[] values = inputName.Split(' ');
List<string> output = new List<string>();

for (int i = 0; i < values.Length -1; i++)
{
    if (values[i].Contains('=') && !values[i + 1].Contains('='))
    {
         output.Add(values[i] + ' ' +values[i + 1]);
    }
    else if (!values[i].Contains('='))
    {
    }
    else
    {
        output.Add(values[i]);
    }
}

string[] requiredValues = output.ToArray();
0 голосов
/ 23 ноября 2018

Вы можете попытаться использовать Regex, чтобы разделить их:

string str = "id=4 issue=critical level project=ABC group=Group A";

var prefix = Regex.Matches(str, @"\w+=").ToList();

var values = Regex.Split(str, @"\w+=").Where(x => !string.IsNullOrEmpty(x)).ToList();

for (int i = 0; i < prefix.Count; i++)
{
    Console.WriteLine($"{prefix[i]}{values[i]}");
}

1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...