如何反转字符串的字母顺序
我想知道如何反转字符串中的单个字符以及数字。我已经通过以下方式以非常简单的方式尝试过它,但出于逻辑原因,这不起作用:
DECODED
abcdefghijklmnopqrstuvwxyz
ENCODED
abcdefghijklmmlkjihgfedcba
我使用了一个非常简单的string.Replace来获取它。如您所见,只有一半的字符串被反转。我不确定我的逻辑是否正确,但我认为这是因为字符串作为一个整体进行转换,而不是单独转换为其中的每个字符。我想知道反转字母字符和数字的最佳方法是什么,所以我可以得到一个合适的输出。例子非常受欢迎!
答案 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”的重音)。