我想将我的Java代码翻译成C#,但我很难找到String.equalsIgnoreCase
和StringBuffer
的等价物。
这是我的Java语法:
public static boolean isPalindrom (String _text)
{
return _text.equalsIgnoreCase(new StringBuffer(_text).reverse().toString());
}
这是我的C#代码
public static bool isPalindrom(string _text)
{
char[] charArray = _text.ToCharArray();
Array.Reverse(charArray);
return _text.Compare(new StringBuilder(_text).Remove());
}
答案 0 :(得分:2)
这个怎么样:
public static bool isPalindrome(string _text)
{
return _text.SequenceEqual(_text.Reverse());
}
SequenceEqual
和Reverse
都是Linq的扩展方法。当然,您不必检查每个字符以测试字符串是否回文。那怎么样:
public static bool isPalindrome(string _text)
{
var halfLen = (int)Math.Ceiling(_text.Length / 2.0);
return _text.Take(halfLen).SequenceEqual(_text.Reverse().Take(halfLen));
}
要使此方法不区分大小写,您只需执行以下操作:
public static bool isPalindrome(string _text)
{
_text = _text.ToUpperInvariant();
var halfLen = _text.Length / 2;
return _text.Take(halfLen).SequenceEqual(_text.Reverse().Take(halfLen));
}