簡體   English   中英

在C#中反轉字符串的最佳方法

[英]Best way to reverse string in c#

這是反轉字符串的正確方法嗎? 我打算用它來反轉一個字符串,例如:產品»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;
}

怎么樣:

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

編輯:如果組件包含空格(例如,“ Foo Products»X1»X3”),則更新的版本將可用

是的,這似乎還可以。

關於StringBuilder:
除非拆分后通常有4-5個以上的元素,否則無需使用StringBuilder。 如果通常少於該數量,那么聚合就可以了。

您應該使用StringBuilder而不是僅使用字符串聚合,尤其是在要大量使用的情況下。

您還可以使用String.Join()將定界的字符串數組放回原處。

我使用了以下內容:

  /// <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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM