C# 如何颠倒字符串的字母顺序

C# 如何颠倒字符串的字母顺序,c#,C#,如何颠倒字符串的字母顺序 我想知道如何反转字符串中的单个字符和数字。我已经用一种非常简单的方式尝试过了,方法如下,但出于逻辑原因,这不起作用: 解码 编码的 我使用了一个非常简单的字符串。正如您所看到的,只有一半的字符串被反转。我不确定我的逻辑是否正确,但我认为这是因为字符串作为一个整体进行转换,而不是单独转换其中的每个字符。我想知道什么是最好的方法是颠倒字母和数字,这样我可以得到一个正确的输出。示例非常受欢迎 以下是反转字符串的一种方法 using System.Linq; //... s

如何颠倒字符串的字母顺序

我想知道如何反转字符串中的单个字符和数字。我已经用一种非常简单的方式尝试过了,方法如下,但出于逻辑原因,这不起作用:

解码

编码的


我使用了一个非常简单的字符串。正如您所看到的,只有一半的字符串被反转。我不确定我的逻辑是否正确,但我认为这是因为字符串作为一个整体进行转换,而不是单独转换其中的每个字符。我想知道什么是最好的方法是颠倒字母和数字,这样我可以得到一个正确的输出。示例非常受欢迎

以下是反转字符串的一种方法

using System.Linq;

//...

string f = "abcdefghijklmmlkjihgfedcba"
string r = new string(f.Reverse().ToArray());
string str= "reverse string";
string stroutput = new string(str.ToCharArray().Reverse().ToArray());
此方法的Ext方法

static class StringExt
{
    public static string ReverseStr(this string str)
    {
        return new string(str.ToCharArray().Reverse().ToArray());
    }
}
如果要更改字母顺序,请执行以下操作:

string str = "agdefbv";
char[] str = str.ToArray();
Array.Sort(str );
string s = new string(str);

假设OP想按字母顺序排列

string s = "yourstring";
s = new string(s.OrderBy(t => t).ToArray());

假设你正在尝试反转字符串,这在你的问题中不是很清楚

您可以使用如下扩展方法:

public static class StringExtensions
{
    public static string Reverse(this string s)
    {
        if (s == null)
            throw new ArgumentNullException("s");

        bool wasFormD = false;
        if (s.IsNormalized(NormalizationForm.FormD))
        {
            wasFormD = true;
            // Normalize to form C so that composite chars are represented as a single char
            s = s.Normalize(NormalizationForm.FormC);
        }
        s = new String(((IEnumerable<char>)s).Reverse().ToArray());

        // Restore normalization form D
        if (wasFormD)
        {
            s = s.Normalize(NormalizationForm.FormD);
        }
        return s;
    }
}
string original = "abcdefghijklmnopqrstuvwxyz";
string reversed = original.Reverse();

注意:扩展方法的代码可能看起来比需要的复杂,但是为了避免颠倒组合字符的顺序,规范化技巧是必要的。如果不进行此操作,像Les Misérables这样的字符串将被反转为selbaŕesiM seL请注意r而不是e上的重音。

显示您的代码。对于回答的人,请阅读帖子。请澄清。你想颠倒字母顺序吗?如图所示,a被z替换,b被y替换,等等。?数字呢?您希望0转到9吗?还是要颠倒字符串中各个字符的顺序?很容易看出您做错了什么;类似于“将第一个字符放在最后一个字符的位置*,在适当的位置*,在该行上下重复”。不要对初始字符串进行替换,而是在转到单独的字符串时保存结果,这样您就可以使用与已有逻辑相同的逻辑。一篇你的代码帖子仍然是有益的。Downvoter,请解释。String上没有反向方法。通过字符串实现的IEnumerable上有一个,但它返回的是IEnumerable,而不是String-1 op希望反转字符串的字母顺序,而不是反转字符串中字符的顺序-1再说一遍,@ThomasLevesque说的话:@ThomasLevesque感谢你指出这一点。我已经相应地编辑了这篇文章。op特别提到了字符串的逆字母顺序。在这个例子中,他使用string.Replace将a替换为z,b替换为y,等等。但是当他到达z->a时,a变成了z,z保持为z,所以原来的a和z都变成了a。这就是为什么他的输出字符串看起来是这样的。这真的很简单。一种方法是将这个该死的字符串转换成数组,在一个循环中进行单次替换,然后再转换回来。这个问题显然是一群驾车经过的投票者的目标
s = new string(s.OrderByDescending(t => t).ToArray());
public static class StringExtensions
{
    public static string Reverse(this string s)
    {
        if (s == null)
            throw new ArgumentNullException("s");

        bool wasFormD = false;
        if (s.IsNormalized(NormalizationForm.FormD))
        {
            wasFormD = true;
            // Normalize to form C so that composite chars are represented as a single char
            s = s.Normalize(NormalizationForm.FormC);
        }
        s = new String(((IEnumerable<char>)s).Reverse().ToArray());

        // Restore normalization form D
        if (wasFormD)
        {
            s = s.Normalize(NormalizationForm.FormD);
        }
        return s;
    }
}
string original = "abcdefghijklmnopqrstuvwxyz";
string reversed = original.Reverse();