如何反转字符串的字母顺序

时间:2013-01-15 14:26:28

标签: c#

如何反转字符串的字母顺序

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

DECODED

abcdefghijklmnopqrstuvwxyz

ENCODED

abcdefghijklmmlkjihgfedcba

我使用了一个非常简单的string.Replace来获取它。如您所见,只有一半的字符串被反转。我不确定我的逻辑是否正确,但我认为这是因为字符串作为一个整体进行转换,而不是单独转换为其中的每个字符。我想知道反转字母字符和数字的最佳方法是什么,所以我可以得到一个合适的输出。例子非常受欢迎!

4 个答案:

答案 0 :(得分:3)

using System.Linq;

//...

string f = "abcdefghijklmmlkjihgfedcba"
string r = new string(f.Reverse().ToArray());

答案 1 :(得分:0)

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

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);

答案 2 :(得分:0)

假设OP想按字母顺序排序

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

s = new string(s.OrderByDescending(t => t).ToArray());

答案 3 :(得分:0)

(假设您正在尝试撤消字符串,这在您的问题中并不十分明确......)

您可以使用这样的扩展方法:

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();

注意:扩展方法的代码可能看起来比必要的复杂,但是规范化技巧是必要的,以避免颠倒组合字符的顺序。如果没有这种操作,像“MisMisérables”这样的字符串将被翻转为“selbaŕesiMseL”(注意“r”而不是“e”的重音)。