1
是有可能變換的表達式等使用正則表達式替換變換表達式
{op1 == op2, #} && {op3 > op4, 1, 2} && op5 == op6
到
op1 ==_# op2 && op3 >_1_2 op4 && op5 == op6
所以,逗號之後所有出現應當放置在操作者後分隔由下劃線(==,>,<,< =,等等...)。 opX可以是任何字母數字值。
是有可能變換的表達式等使用正則表達式替換變換表達式
{op1 == op2, #} && {op3 > op4, 1, 2} && op5 == op6
到
op1 ==_# op2 && op3 >_1_2 op4 && op5 == op6
所以,逗號之後所有出現應當放置在操作者後分隔由下劃線(==,>,<,< =,等等...)。 opX可以是任何字母數字值。
Qtax的評論後,我只寫了一個解決方案:
var st = "{op1 == op2, #} && {op3 > op4, 1, 2} && op5 == op6";
var regex = "{.*?}";
for (var match = Regex.Match(st, regex); match.Success; match = Regex.Match(st, regex))
{
var oldString = match.Value; // {op1 == op2, #}
var op = oldString.Split(' ').ToList()[1].Trim(); // ==
var csv = oldString.Split(',').Select(x => x.Trim()).ToList(); // [0] = "{op1 == op2" [1] = "#}"
var expression = csv[0].Remove(0,1); // op1 == op2
csv.RemoveAt(0);
var extension = "_" + String.Join("_", csv);
extension = extension.Remove(extension.Length-1); // _#
var newString = expression.Replace(op, op + extension);
st = st.Replace(oldString, newString);
}
哪種語言是您使用? –
我正在使用C#.Net – KasF
這是不容易與正則表達式。至少不是一次通過。 – Qtax