2016-12-02 10 views
-2

数字とアルファベットの数字の場所でプレースを回転させる必要があります。アルファベットの数字と数字の位置を回転する

最初に英数字と数字を表示する必要があります。私はこれを取得する必要があり

11AA 
20BA 
70D 
9SD 

:たとえば

AA11 
BA20 
D70 
SD9 

を私は逆にしようとした - 私はあなたがChar.IsDigitを使用することができ

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

私たちは、入力パターンについての詳細情報を取得する必要があります。入力は常に同じサイズですか(あなたのサンプルではそうではありません)?文字と数字を混在させることができますか(A12B)、それらは常に連続していますか? – Pikoh

答えて

3

を必要とするものが、そのありません。

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); 
} 

2つの新しいchar配列が作成され、複数のステップとして作成されるので、私が提案するアプローチは最適ではありませんが、おそらく、中間の2つのchar配列を作成することなくそれを行う方法があります。

+0

'char [] chars = s.ToCharArray();'を省略し、文字列 'char [] digits = s.Where(c => Char.IsDigit(c))でlinq演算を使用するだけです。 ' –

+0

@ m.rogalskiもしあなたが文字列にできるかどうか私はいつも忘れています – TheLethalCoder

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))); 
    } 
関連する問題