gpt4 book ai didi

c# - 不能将属性或索引器分配给::string2[i] = sting1[i]

转载 作者:太空宇宙 更新时间:2023-11-03 17:20:41 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com