Как сделать пробел строки с помощью Regex в C #? - PullRequest
0 голосов
/ 06 июня 2019

У меня есть несколько строк в следующем формате "(space)> sometext > anothertext".

"sometext" и "anothertext" могут быть любыми - они могут различаться по длине и содержанию.

Префикс каждой строки всегда равен "(space)>", в то время как (space) - это любое заданное число символов пробел до указанной максимальной длины.

Примеры:

Максимальная длина префикса - 10.

 1. "> here is same 1 > sample 1"
 2. "  > here is sample 2 > sample 2 indeed"
 3. "     > a very long spaced prefix > spaced prefix"

Мне нужно выровнять все префиксы по одинаковой длине пробела.Например, выравнивая все по 10 пробелам символам ...

 1. "          > here is same 1 > sample 1"
 2. "          > here is sample 2 > sample 2 indeed"
 3. "          > a very long spaced prefix > spaced prefix"

Я использую Regex для достижения этой цели с помощью следующего кода:

int padding = 10;
Regex prefix = new Regex(@"^(\s*)>.*");
Match prefix_match = prefix.Match(line);
if (prefix_match.Success == true)
{
    string space_padding = new string(' ', padding - prefix_match.Groups[1].Value.Length);
    return prefix.Replace(line, space_padding);
}
return line;

Но я всегда получаю в результате строку длиной 10 пробелов ...

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Это будет работать.

string text = "   > a very long spaced prefix > spaced prefix";
text = "          " + text.Trim();

В качестве альтернативы вы можете использовать:

string text = "     > a very long spaced prefix > spaced prefix";
text = new String(' ', 10) + text.Trim();
0 голосов
/ 06 июня 2019

Вы можете использовать комбинацию Trim и конструктора String:

string text =  "     > a very long spaced prefix > spaced prefix";
text = new string(' ', 10) + text.Trim();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...