6

我想检索给定奇数长度字符串的中间三个字符。例如。如果

string original = "India" //  expected output - "ndi" 
string original = "America" // expected output - "eri" 

我尝试了以下代码,它按要求工作,但我想知道有没有更好的方法来做同样的事情?

public string GetMiddleString (string original)
{
    string trimmed = string.Empty;
    int midCharIndex = (original.Length / 2);
    if ((original.Length) % 2 != 0)
    {
        trimmed = original.Substring (midCharIndex - 1, 3);
    }
    else
    {
        trimmed = original;
    }
    return trimmed;
}
4

3 回答 3

12

而不是 if 你可以使用三元运算符

return (!String.IsNullOrEmpty(original) 
        && original.Length % 2 != 0 
        && original.Length >= 3) 
    ? original.Substring((original.Length / 2) - 1, 3) 
    : original;

这将是所需方法中唯一的代码。添加&& original.Length >= 3以防止错误。

于 2013-07-16T19:51:19.830 回答
10

这就是我想出的。并不是说它真的对你的代码有很大的改变

public string GetMiddleString(string original)
{
    if (original.Length % 2 != 0 && original.Length >= 3)
        return original.Substring(original.Length / 2 - 1, 3);
    return original;
}

我会确保检查字符串的长度,以免出现任何异常。

于 2013-07-16T19:53:44.620 回答
5

总是可以去LINQ!

if(!string.IsNullOrWhiteSpace(s) && s.Length > 4 && (s.Length % 2) != 0) {
    return new string(s.Skip((s.Length / 2) - 1).Take(3).ToArray());
}
else { return string.Empty; }
于 2013-07-16T20:06:43.253 回答