2014-02-05 4 views
-2

Я написал эту функцию расширения, чтобы отменить однострочное значение. Думаю, я могу коротко объяснить это.Reverse Single String value

public static string ReverseSingleString(this string value) 
     { 
      string newString = string.Empty; 
      char[] chars = new char[value.Length]; 
      char[] chars2 = new char[value.Length]; 
      int j = 0; 
      foreach (char c in value) 
      { 
       chars[j] = c; 
       j++; 
      } 
      j = 0; 
      for (int i = chars.Length - 1; i >= 0; i--) 
      { 
       chars2[j] = chars[i]; 
       newString += chars2[j].ToString(); 
       j++; 
      } 
      return newString; 
     } 
+3

Этот вопрос будет вне темы, потому что речь идет о проверке кода. http://codereview.stackexchange.com/ – Vache

+0

Возможный дубликат [Лучший способ изменить строку] (http://stackoverflow.com/questions/228038/best-way-to-reverse-a-string) –

ответ

3

Без обратной функции:

string Reverse(string s) 
{ 
    char[] c = new char[s.Length]; 
    for (int i = s.Length-1, j = 0; i >=0 ; i--, j++) 
    { 
     c[j] = s[i]; 
    } 
    return new string(c); 
} 

, очевидно, вы можете положить, что в метод расширения

4

Как о следующем расширении

public static class StringExtensions{ 
    public static string ReverseString (this string value) 
    { 
     var reversed = string.Join("",value.Reverse()); 
     return reversed; 
    } 
} 
+1

Звучит как Домашнее задание для меня, вероятно, было сказано не использовать Reverse() :-) –

+0

не домашнее задание, но попросите меня не использовать функцию Reverse() создать свой собственный :) – dawncode

+1

Почему кто-то попросит вас создать свою собственную, если ее не будет домашнее задание? Время - деньги ... – Dimitri

2

Поскольку это расширение и я дон Не нужно заботиться о читаемости, я бы использовал StringBuilder:

public static string ReverseSingleString(this string value) 
{ 
    StringBuilder sb = new StringBuilder(value.Length); 
    for(int i = value.Length - 1; i >= 0; i--) 
     sb.Append(value[i]); 
    return sb.ToString(); 
} 
2

Также вы можете использовать Array.Reverse метод появляется

public static string Reverse(this string source) 
{ 
    var chars = source.ToCharArray(); 
    Array.Reverse(chars); 
    return new String(chars); 
}