在c#中反转字符串的最佳方法

时间:2010-05-29 12:02:59

标签: c# .net string

这是反转字符串的正确方法吗?我打算用它来反转一个字符串:产品»X1»X3到X3«X1«产品 我希望它是一个可以在其他地方使用的全局函数。

public static string ReverseString(string input, string separator, string outSeparator)
{
    string result = String.Empty;
    string[] temp = Regex.Split(input, separator, RegexOptions.IgnoreCase);
    Array.Reverse(temp);
    for (int i = 0; i < temp.Length; i++)
    {
        result += temp[i] + " " + outSeparator + " ";
    }
    return result;
}

4 个答案:

答案 0 :(得分:7)

怎么样:

String.Join(" « ", "Products » X1 » X3".Split(new[]{" » "}, 
    StringSplitOptions.None).Reverse().ToArray());

编辑:如果组件包含空格(例如“Foo Products»X1»X3”),则更新后的版本将有效

答案 1 :(得分:2)

是的,似乎没问题。

关于StringBuilder:
除非在拆分后通常超过4-5个元素,否则无需使用StringBuilder。如果通常小于那,那么聚合就可以了。

答案 2 :(得分:1)

你应该使用StringBuilder而不仅仅是字符串聚合,特别是如果这将被大量使用。

您还可以使用String.Join()将分隔的字符串数组重新组合在一起。

答案 3 :(得分:0)

我使用了以下内容:

  /// <summary>
    /// From BReusable
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="items"></param>
    /// <param name="toStringFunc"></param>
    /// <param name="seperator"></param>
    /// <returns></returns>
    public static string ToJoinedString<T>(this IList<T> items, Func<int, T, string> toStringFunc, string seperator)
    {

        var sb = new StringBuilder();

        for (int i = 0; i < items.Count(); i++)
        {
            sb.Append((i != 0 ? seperator : String.Empty) + toStringFunc(i,items[i]));

        }
        return sb.ToString();
    }

    public static string ToStringFromCharArray(this IEnumerable<char> items)
    {
        return items.ToJoinedString(x => x.ToString(), string.Empty);
    }

stringValue.Reverse().ToStringFromCharArray();