无法将属性或索引器分配给

无法将属性或索引器分配给

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/

10-10 22:04