我试图反转并返回一个StringBuilder结果但是我按以下public static string Reverse( string s )
{
char[] charArray = s.ToCharArray();
Array.Reverse( charArray );
return new string( charArray );
}
的顺序尝试所有变体时出现以下错误:
无法隐式转换类型' System.Collections.Generic.IEnumerable'到'字符串'。
' StringBuilder的'不包含'反向'的定义没有扩展方法'反向'接受类型' StringBuilder'的第一个参数。可以找到
以相反顺序返回stringbuilder结果的正确格式是什么?
where
CASE [a]
WHEN 'YY' THEN dateadd(YY,[b],[c])
WHEN 'DD' THEN dateadd(DD,[b],[c])
...
END
遗憾的是,这一段代码没有一行
请投票删除此帖子,以便我可以回复XD
答案 0 :(得分:3)
您必须将其转换为字符串,然后将其反转,将其转换为数组,然后从中创建一个新字符串:
return new string(sb.ToString().Reverse().ToArray());
答案 1 :(得分:1)
我们可以编写一个extension method,它遵循与StringBuilder类中存在的其他方法一起使用的模式 我的意思是,我们可以直接在StringBuilder缓冲区上执行相反的操作。
public static void(this StringBuilder sb)
{
char t;
int end = sb.Length - 1;
int start = 0;
while (end - start > 0)
{
t = sb[end];
sb[end] = sb[start];
sb[start] = t;
start++;
end--;
}
}
现在我们可以只用一行代码
来使用扩展名StringBuilder sb = new StringBuilder();
sb.Append("Testing reverse directly on the stringbuilder buffer");
sb.Reverse();
Console.WriteLine(sb.ToString());
警告,这只是回答发布问题的练习。我不知道它是否更有效率,或者这种方法是否存在缺陷 当然,没有像规范方法那样存储字符串和数组所需的新内存分配。鉴于用户已经有一个stringbuilder,我认为这种方法可以很容易地使用。