-5

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

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

解码

abcdefghijklmnopqrstuvwxyz

编码

abcdefghijklmmlkjihgfedcba

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

4

4 回答 4

3
using System.Linq;

//...

string f = "abcdefghijklmmlkjihgfedcba"
string r = new string(f.Reverse().ToArray());
于 2013-01-15T14:28:08.007 回答
0

假设 OP 想要按字母顺序排列

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

或者

s = new string(s.OrderByDescending(t => t).ToArray());
于 2013-01-15T14:36:18.980 回答
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();

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

于 2013-01-15T14:36:34.553 回答
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);
于 2013-01-15T14:31:19.720 回答