Лучший способ перевернуть строку в C # - PullRequest
1 голос
/ 29 мая 2010

Это правильный метод, чтобы перевернуть строку? Я планирую использовать это, чтобы перевернуть строку, например: Я хочу, чтобы это была глобальная функция, которую можно использовать в другом месте.

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 ]

7 голосов
/ 29 мая 2010

Как насчет:

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

РЕДАКТИРОВАТЬ: обновленная версия версии будет работать, если компоненты содержат пробелы (например, «Foo Products» X1 »X3»)

2 голосов
/ 29 мая 2010

Да, похоже, все в порядке.

О StringBuilder:
Нет необходимости использовать StringBuilder, если после разбиения обычно не более 4-5 элементов. Если обычно меньше этого значения, агрегация в порядке.

1 голос
/ 29 мая 2010

Вы должны использовать StringBuilder, а не просто агрегирование строк, особенно если это будет использоваться часто.

Вы также можете использовать String.Join(), чтобы собрать массив строк с разделителями.

0 голосов
/ 20 марта 2011

Я использовал следующее:

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

...