using System;
namespace stringdouble
{
public class populate
{
public string string1;
public string string2;
public populate (string string1 ,string string2)
{
for (int i=1; i < string1.Length; i++)
{
if (string1[i] == string1[i-1])
{
string2[i] = string1[i];//error on this line
Console.WriteLine ("Character Copied");
Console.ReadKey();
Console.Clear();
}
}
Console.WriteLine (string2);
}
}
这是代码,但由于某种原因,它给了我上面输入的错误。我正在尝试删除字符串中的重复项并将其复制到新的字符串中。
我用
new populate(FirstString, SecondString);
称呼它。 最佳答案
字符串是不可变的,因此一旦创建它们,便不能在不创建新字符串的情况下对其进行修改。这就是为什么当您尝试从字符串中修改字符时会出现异常的原因。
您可以使用Linq来获取唯一字符:
string uniqueCharacters = new string(string1.Distinct().ToArray());
或者,如果要在新字符串中包含所有重复的字符,请执行以下操作:
var dupChars = string1.GroupBy(c => c)
.Where(g => g.Count() > 1)
.Select(g => g.First());
string dupliateCharacters = new string(dupChars.ToArray());
正如BartozKP所提到的,也许您想创建一个相等的相邻字符的字符串。这是使用
StringBuilder
和循环的可能实现:public string Populate(string text)
{
StringBuilder sb = new StringBuilder();
if(text.Length > 1)
{
for (int i = 1; i < text.Length; i++)
{
Char c = text[i];
if (c == text[i - 1])
sb.Append(c);
}
}
return sb.ToString();
}
关于c# - 无法将属性或索引器分配给:: string2 [i] = sting1 [i],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19244999/