[英]How to delete and add elements in a CharArray in C#?
我有下一個問題。 例如,如果我有下一個CharArray: {!(!A && A)(!A &&!A)}這里的問題是我要刪除所有的'!' 在“ A”旁邊,然后添加“!” 到初始CharArray中沒有的'A'。 因此,該問題的最終結果需要為: {!(A &&!A)(A && A)}
我試圖用它來刪除'!':// Regla是包含{!(!A && A)(!A &&!A)}的字符串
`char[] array = Regla.ToCharArray();
for (int i = 0; i < array.Length; i++)
{
char c = array[i];
if (c == idL1 && array[i - 1] == '!')
{
if (cont1 == 0 && cont2 == 0)
{
var tRegla = new StringBuilder(Regla);
tRegla.Remove(i - 1, 1);
Regla = tRegla.ToString();
cont1++;
}
if (cont1 == 1 && cont2 == 1)
{
var tRegla = new StringBuilder(Regla);
tRegla.Remove(i - 2, 1);
Regla = tRegla.ToString();
cont1++;
}
if (cont1 == 2 && cont2 == 2)
{
var tRegla = new StringBuilder(Regla);
tRegla.Remove(i - 3, 1);
Regla = tRegla.ToString();
cont1++;
}
if (cont1 == 3 && cont2 == 3)
{
var tRegla = new StringBuilder(Regla);
tRegla.Remove(i - 4, 1);
Regla = tRegla.ToString();
cont1++;
}
cont2++;
}`
但是此刻要添加一個“!” 我遇到了很多問題,因為計數器“ i”發生了變化,因此我會像這樣使用拖尾音:
`var tRegla = new StringBuilder(Regla);
tRegla.Insert(i - 1, "!");
Regla = tRegla.ToString();
cont1++;}`
我認為有更好的解決方法。 謝謝。
您是否必須使用char數組來執行此操作? 在我看來,您可以這樣做:
Regla.Replace("A", "!A").Replace("!!A", "A");
它用!A
替換字母A
所有實例,因此,您具有!!A
和!A
而不是!A
和A
然后它將所有!!A
替換為A
,這應該與原始內容完全相反。
要使用任何大寫字母進行此操作,您需要改用Regex.Replace
。
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
var Regla = "{!( !A && A) ( !A && !A )}";
var output = Regex.Replace(Regla, "([A-Z])", "!$1").Replace("!!", "");
Console.WriteLine(output);
}
}
這有點復雜...正則表達式將字母放入()內,這使其成為capture group
。 然后,替換位添加一個!
到$1
,表示捕獲組內匹配字符的實例。 然后對.Replace()
的調用將刪除所有!!
在字符串中。 這適用於任何大寫字母。 如果需要使用其他模式,只需修改正則表達式即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.