簡體   English   中英

如何在C#中刪除和添加CharArray中的元素?

[英]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而不是!AA 然后它將所有!!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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM