-5

文字列のアルファベット順を逆にする方法

文字列内の個々の文字と数字を逆にする方法を知りたいのですが。私はすでに次のことを行うことで非常に簡単な方法でそれを試しましたが、論理的な理由でこれは機能しませんでした:

デコード

abcdefghijklmnopqrstuvwxyz

エンコード

abcdefghijklmmlkjihgfedcba

非常に単純な文字列を使用しました。これを取得するには、置き換えます。ご覧のとおり、文字列の半分だけが反転しています。ロジックが正しいかどうかはわかりませんが、これは、文字列内のすべての文字が個別に変換されるのではなく、文字列全体が変換されるためだと思います。適切な出力が得られるように、アルファベットと数字を逆にするのが最善の方法を知りたいです。例は大歓迎です!

4

4 に答える 4

3
using System.Linq;

//...

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

以下は文字列を逆にする1つの方法です

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 に答える
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" に逆になります ("e" ではなく "r" のアクセントに注意してください)。

于 2013-01-15T14:36:34.553 に答える