C# 排序字符串
我试图在不使用字符串数组的情况下对字符串进行排序,但出现了错误(属性或索引器“string.this[int]”无法分配给--它是只读的)。我不想使用任何字符串生成器或数组方法C# 排序字符串,c#,string,C#,String,我试图在不使用字符串数组的情况下对字符串进行排序,但出现了错误(属性或索引器“string.this[int]”无法分配给--它是只读的)。我不想使用任何字符串生成器或数组方法 string s = "aedcb"; string a = s; char t; for (int p = 0; p <= a.Length - 2; p++) { for (int i = 0; i <= a.Length - 2; i++) { if (a[i] >
string s = "aedcb";
string a = s;
char t;
for (int p = 0; p <= a.Length - 2; p++)
{
for (int i = 0; i <= a.Length - 2; i++)
{
if (a[i] > a[i + 1])
{
t = a[i + 1];
a[i + 1] = a[i]; //Here is the error
a[i] = t; //Here is the error
Console.WriteLine(a);
}
}
}
s = a.ToString();
Console.ReadLine();
string s=“aedcb”;
字符串a=s;
查尔特;
对于(int p=0;p字符串是不可变的。您需要调用tocharray()
并对其进行变异,然后执行新字符串(变异)
这将循环并按ascII顺序(字母顺序,但大小写将生效)。它使用临时值来存储字符串
string sortString(string s)
{
string newString = s;
for (int p = 0; p < s.Length; p++)
{
for (int i = p; i < s.Length; i++)
{
if (s[p] > s[i])
{
newString = "";
for (int j = 0; j < s.Length; j++)
{
if (j == i)
{
newString += s[p];
}
else
if (j == p)
{
newString += s[i];
}
else
{
newString += s[j];
}
}
s = newString;
}
}
}
return newString;
}
字符串排序字符串(字符串s)
{
字符串newString=s;
对于(int p=0;ps[i])
{
新闻字符串=”;
对于(int j=0;j
我就是这样做的。正如@darren kopp所说,我首先转换成了.charArray
string a = "acegikmobdfhjln";
char[] b = a.ToCharArray();
char t;
for (int h = 0; h < b.Length; h++)
{
for (int i = 0; i <= b.Length - 2; i++)
{
if (b[i] > b[i + 1])
{
t = b[i + 1];
b[i + 1] = b[i];
b[i] = t;
}
}
}
foreach (char item in b)
Console.Write(item + " ");
Console.WriteLine();
Console.ReadLine();
string a=“acegikmobdfhjln”;
char[]b=a.ToCharArray();
查尔特;
对于(int h=0;h
您不能直接修改字符串,它是不可变的。请创建一个新字符串或使用StringBuilder
。您为什么不使用内置排序方法?可能会重复?请花时间实际阅读人们在上一个问题上发表的评论。有人在上一个评论中已经解决了此问题。添加传统上,请学习如何使用谷歌。只需逐字搜索Property或indexer'字符串。此[int]'无法分配给--它是只读的
引出了另一个与此问题完全相同的SO问题。@StriplingWarrior可能是因为这是家庭作业。ASCII是一个小型和古老的字符集。.NET的char
存储单个UTF-16代码单元,其中一个或两个编码Unicode码点。(当然,如果需要两个,那么使用其他代码点的代码单元对它们进行排序将产生混乱和无效的代码单元序列。)