2016-12-18 5 views
0

内の文字間のスペースまあ、私はこのような命題論理の文持って追加:文字列のC#

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

と私は何をしたいのですが、それはそれぞれの文字の間にスペースを追加することです。このようなものを入手してください:

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

また、オペランドと負のステートメントを表すため、結合された文字->-Pに空白を追加するのは嫌です。 私は空白を追加した正規表現を見つけましたが、それは持ってはいけないものであっても、すべての文字でそれを行いました。 これは私が見つけた式です:

(?<=.)(?!$) 

So;それを行うための任意の助け;メソッドか同じ正規表現であるが変更されているかどうかは関係ありません。コード出力の上

+1

あなたはすべての文字の間にスペースを追加することはできますか?あなたは " - "に続くスペースを削除できますか?これらの両方を行うことができれば、問題を解決することができます。それについて考えているのは –

+0

です。私はそれを考えなかった。あなたの権利、私は試してみます。 – superkiller170793

+0

しかし、私が書いた正規表現でそれを行う方法はありますか?それはメソッドを作成するよりも簡単になるからです。 – superkiller170793

答えて

0
あなたはその後、削除する Replaceを使用して、スペースを追加することにより、LINQの、最初の Aggregate文字列を使用することができます

各ハイフンの右側のスペース。

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

0

シンプルに考えます。char -make []それを通してそれ -loopから変換するために、その上に置き換える-Trow文字列 にリスト-joinおき%2 をスペースを追加リストへ - >へ - >と理解するのは簡単な

1

バージョン:

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

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