旋转字母数字和数字位置

时间:2016-12-02 10:54:25

标签: c#

我需要在数字和字母数字位置旋转位置。

首先需要查看字母数字,然后是数字字符。

例如:

11AA
20BA
70D
9SD

我需要得到这个:

AA11
BA20
D70
SD9

我尝试反向 - 但它不是我需要的

public static string Reverse( string s )
{
    char[] charArray = s.ToCharArray();
    Array.Reverse( charArray );
    return new string( charArray );
}

2 个答案:

答案 0 :(得分:3)

您可以使用Char.IsDigit

public static string Reverse (string s)
{
    char[] digits = s.Where(c => Char.IsDigit(c)).ToArray();
    char[] letters = s.Where(c => !Char.IsDigit(c)).ToArray();

    return new string(letters) + new string(digits);
}

虽然我建议的方法并不是最好的,因为它创建了两个新的char数组和多个步骤。可能有一种方法可以在不必创建2个中间字符数组的情况下完成它。

答案 1 :(得分:1)

Linq 解决方案(字母和数字连接):

  public static string Reverse(string s) {
    if (string.IsNullOrEmpty(s)) // public method wants validation
      return s; // or throw exception

    return string.Concat(s
      .Where(char.IsLetter)
      .Concat(s.Where(char.IsDigit)));
  }