如何在C#中使用正则表达式对字符串进行空格填充?

时间:2019-06-06 06:52:54

标签: c# regex

我有以下格式为“ (space)> sometext > anothertext”的多个字符串。

sometext”和“ anothertext”可以是任何东西-它们的长度和内容可以不同。

每个字符串的前缀始终是“ (space)>”,而(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 个答案:

答案 0 :(得分:1)

这将起作用。

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

答案 1 :(得分:0)

您可以结合使用TrimString构造函数:

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