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