在字符串C#中的字符之间添加空格

时间:2016-12-18 01:05:22

标签: c#

好吧,我有一个这样的命题逻辑句子:

~(((-P|-Q)->(P->Q))&((P->Q)->(-P|Q)))  

以及我想做的事情,就是在每个角色之间添加空格;得到这样的东西:

~ ( ( ( -P | -Q ) -> ( P -> Q ) ) & ( ( P -> Q ) -> ( -P | Q ) ) )  

此外;我不想仅在加入的字符->-P中添加空格,因为它代表一个操作数和一个否定语句。 我找到了一个添加空格的正则表达式,但它使用了所有字符,即使是那些不应该有的字符。 这是我找到的表达式:

(?<=.)(?!$) 

因此;做任何帮助;无论是方法还是相同的正则表达式都无关紧要。

4 个答案:

答案 0 :(得分:1)

string subject = "~(((-P|-Q)->(P->Q))&((P->Q)->(-P|Q)))",
       pattern = @"([\(\)|QP~&]|-P|-Q|->)";

Regex reg = new Regex(pattern);

Console.WriteLine(reg.Replace(subject, "$1 "));

以上代码输出:

~ ( ( ( -P | -Q ) -> ( P -> Q ) ) & ( ( P -> Q ) -> ( -P | Q ) ) )

正则表达式解释:

https://regex101.com/r/b7STUP/2

答案 1 :(得分:1)

版本简单易懂:

string initial = "~(((-P|-Q)->(P->Q))&((P->Q)->(-P|Q)))";

string result = string.Join<char> (" ", initial).Replace ("- ", "-");

答案 2 :(得分:0)

您可以通过添加空格来使用Linq,首先Aggregate字符串,然后使用Replace删除每个连字符右侧的空格。

string initial = "~(((-P|-Q)->(P->Q))&((P->Q)->(-P|Q)))";
string result = initial.Aggregate("", (c, i) => c + i + ' ').Replace(" - ", " -").Trim();

答案 3 :(得分:0)

简单的想法: - 从它做一个char [] - 通过它到列表每%2添加一个空格 - 将列表加到字符串中 - 在它上面替换以转换 - &gt;到 - &gt;等等