Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取奇数长度字符串的中间三个字符_C#_Asp.net_String_C# 4.0 - Fatal编程技术网

C# 获取奇数长度字符串的中间三个字符

C# 获取奇数长度字符串的中间三个字符,c#,asp.net,string,c#-4.0,C#,Asp.net,String,C# 4.0,我想检索给定奇数长度字符串的中间三个字符。 如果 我尝试了下面的代码,它按照要求工作,但我想知道有没有更好的方法来做同样的事情 public string GetMiddleString (string original) { string trimmed = string.Empty; int midCharIndex = (original.Length / 2); if ((original.Length) % 2 != 0) { trimm

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

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

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

而不是,若你们能使用三元运算符

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

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

以下是我的想法。并不是说它真的对你的代码有很大的改变

public string GetMiddleString(string original)
{
    if (original.Length % 2 != 0 && original.Length >= 3)
        return original.Substring(original.Length / 2 - 1, 3);
    return original;
}
我会确保检查字符串的长度,这样您就不会有任何异常。

可以随时使用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; }

传递
null
,一个字符串抛出异常,一个两个字符的字符串返回不正确的结果,一个4个字符的字符串是错误的结果。@a是的,我将在我的项目中编辑相应的代码,并进行异常处理和检查空值。谢谢,“奇串”是什么?长度是奇数的人?是什么让你认为你的代码只会被这样的字符串调用?@DourHighArch的长度很奇怪。对不起,我应该澄清一下。我将在我的帖子中进行编辑。这也可以使用空检查。可以使用空检查。可读性很差。这是一个很好的例子,说明了三元运算符如何被滥用,使得代码很难理解和维护。答案一开始只是作为唯一条件的中间表达式,后来随着需求而增长。明智地使用空格使三元运算符更具可读性,虽然仍然紧凑。此代码是否检查字符串的长度是否为奇数?@rahuldwivedi添加了奇数长度字符串的检查。为什么长度需要大于4?你不能从长度为三的字符串中取中间的三个字符吗?此外,这消除了所有空格的字符串,这不是OP的要求之一。您是否打算使用
string.IsNullOrEmpty
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; }