我怎样才能将这个Java方法最好地转换为C#?

时间:2013-11-21 15:21:02

标签: c# java

我想将我的Java代码翻译成C#,但我很难找到String.equalsIgnoreCaseStringBuffer的等价物。

这是我的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());
}

1 个答案:

答案 0 :(得分:2)

这个怎么样:

public static bool isPalindrome(string _text)
{
    return _text.SequenceEqual(_text.Reverse());
}

SequenceEqualReverse都是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));
}