我需要在数字和字母数字位置旋转位置。
首先需要查看字母数字,然后是数字字符。
例如:
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 );
}
答案 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)));
}