Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字符数组中删除字母_C#_Arrays_Char - Fatal编程技术网

C# 从字符数组中删除字母

C# 从字符数组中删除字母,c#,arrays,char,C#,Arrays,Char,我有一个字符数组。我想删除数组中某个位置的元素 假设我有这个字符数组:溢出 我想从上面的数组中删除R,并调整char数组的大小,使单词为: OVEFLOW 我希望能够在数组的某个位置添加一个新字母。假设我想加上字母T,这样单词就会像:OVETFLOW 我不只是想替换两个字母。我想先完全删除,然后在不同的位置添加字母 我尝试使用用于字符串数组的Remove()方法来解决这个问题。但我还没有找到解决问题的最佳方法。试试这个: char[] myCharArray = new char[] { 'O'

我有一个字符数组。我想删除数组中某个位置的元素

假设我有这个字符数组:溢出

我想从上面的数组中删除R,并调整char数组的大小,使单词为: OVEFLOW

我希望能够在数组的某个位置添加一个新字母。假设我想加上字母T,这样单词就会像:OVETFLOW

我不只是想替换两个字母。我想先完全删除,然后在不同的位置添加字母

我尝试使用用于字符串数组的
Remove()
方法来解决这个问题。但我还没有找到解决问题的最佳方法。

试试这个:

char[] myCharArray = new char[] { 'O', 'V', 'E', 'R', 'F', 'F', 'L', 'O', 'W' };
string str = new string(myCharArray);
int index = str.IndexOf('R');
str=str.Remove(index,1);
str=str.Insert(index, "Z");

myCharArray = str.ToCharArray();
另一种方法:

            string str = "OVERFLOW";
            var arr=str.ToList();
            arr.Remove('F');
            arr.Insert(3, 'T');
            str =new string(arr.ToArray());
举个简单的例子:

string str = "OWERFLOW";
char[] array = str.ToCharArray();

char[] array2 = RemveFromArray(array, 'R');
char[] array3 = InsertIntoArray(array2, 'T', 3);
char[] array4 = RemveFromArrayAt(array, 3);

static char[] RemveFromArray(char[] source, char value)
{
    if (source == null)
        return null;

    char[] result = new char[source.Length];

    int resultIdx = 0;
    for (int ii = 0; ii < source.Length; ii++)
    {
        if(source[ii] != value)
            result[resultIdx++] = source[ii];
    }

    return result.Take(resultIdx).ToArray();
}

static char[] InsertIntoArray(char[] source, char value, int insertAt)
{
    if (source == null || insertAt > source.Length)
        return null;

    char[] result = new char[source.Length + 1];

    Array.Copy(source, result, insertAt);
    result[insertAt] = value;
    Array.Copy(source, insertAt, result, insertAt + 1, source.Length - insertAt);

    return result;
}

static char[] RemveFromArrayAt(char[] source, int removeAt)
{
    if (source == null || removeAt > source.Length)
        return null;

    char[] result = new char[source.Length - 1];
    Array.Copy(source, result, removeAt);
    Array.Copy(source, removeAt + 1, result, removeAt, source.Length - removeAt - 1);

    return result;
}
string str=“OWERFLOW”;
char[]数组=str.ToCharArray();
char[]array2=remvefromrarray(数组'R');
char[]array3=插入数组(array2,'T',3);
char[]array4=RemveFromArrayAt(数组,3);
静态字符[]RemveFromArray(字符[]源,字符值)
{
if(source==null)
返回null;
char[]result=新字符[source.Length];
int-resultix=0;
for(int ii=0;iisource.Length)
返回null;
char[]结果=新字符[source.Length+1];
复制(源、结果、插入);
结果[插入]=值;
复制(源,插入符,结果,插入符+1,源,长度-插入符);
返回结果;
}
静态字符[]RemveFromArrayAt(字符[]源,int removeAt)
{
if(source==null | | removeAt>source.Length)
返回null;
char[]result=新字符[source.Length-1];
复制(源、结果、移除);
Copy(source,removeAt+1,result,removeAt,source.Length-removeAt-1);
返回结果;
}

我不想替换两个字母。我要完全删除一个字母,然后在其他位置添加另一个字母。您要删除当前字母还是从当前位置删除?如果数组中有两个字母
R
,该怎么办?将字符数组转换为字符串,进行运算,然后再转换回字符数组。数组的大小是固定的。无法从数组中删除项。可以替换其值,也可以创建不同大小的新数组。
string str = "OWERFLOW";
char[] array = str.ToCharArray();

char[] array2 = RemveFromArray(array, 'R');
char[] array3 = InsertIntoArray(array2, 'T', 3);
char[] array4 = RemveFromArrayAt(array, 3);

static char[] RemveFromArray(char[] source, char value)
{
    if (source == null)
        return null;

    char[] result = new char[source.Length];

    int resultIdx = 0;
    for (int ii = 0; ii < source.Length; ii++)
    {
        if(source[ii] != value)
            result[resultIdx++] = source[ii];
    }

    return result.Take(resultIdx).ToArray();
}

static char[] InsertIntoArray(char[] source, char value, int insertAt)
{
    if (source == null || insertAt > source.Length)
        return null;

    char[] result = new char[source.Length + 1];

    Array.Copy(source, result, insertAt);
    result[insertAt] = value;
    Array.Copy(source, insertAt, result, insertAt + 1, source.Length - insertAt);

    return result;
}

static char[] RemveFromArrayAt(char[] source, int removeAt)
{
    if (source == null || removeAt > source.Length)
        return null;

    char[] result = new char[source.Length - 1];
    Array.Copy(source, result, removeAt);
    Array.Copy(source, removeAt + 1, result, removeAt, source.Length - removeAt - 1);

    return result;
}