Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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# textchanged事件中的复杂if语句_C#_String_If Statement_Indexof_Textchanged - Fatal编程技术网

C# textchanged事件中的复杂if语句

C# textchanged事件中的复杂if语句,c#,string,if-statement,indexof,textchanged,C#,String,If Statement,Indexof,Textchanged,我想实现一个复杂的if语句。if语句位于textbox的textchanged事件中。如果If语句为true,则应加载pdf文件。问题不在于如何加载PDF文件,这已经很好了,问题在于如何设置if语句。在这里,需要查询以下条件: 位置0处必须为“S”, 位置1处必须为“E”, 位置2处必须为“H”, 立场3无关紧要, 位置4-7代表一个数字,数字必须在0-3000之间(不允许超过3000), 位置8必须再次为“H”或“R” 我尝试了IndexOf()方法,它适用于前3个字符,但对于第8个符号,它不

我想实现一个复杂的if语句。if语句位于textbox的textchanged事件中。如果If语句为true,则应加载pdf文件。问题不在于如何加载PDF文件,这已经很好了,问题在于如何设置if语句。在这里,需要查询以下条件:

位置0处必须为“S”, 位置1处必须为“E”, 位置2处必须为“H”, 立场3无关紧要, 位置4-7代表一个数字,数字必须在0-3000之间(不允许超过3000), 位置8必须再次为“H”或“R”

我尝试了IndexOf()方法,它适用于前3个字符,但对于第8个符号,它不再适用了。我认为这与“H”在位置2已经存在这一事实有关

要检查我尝试使用的号码,请执行以下操作: Convert.ToInt32(textBox1.Text.Substring(4,4))
private static bool ShowPdf(string str)
{
如果(str[0]!=“S”)
返回false;
else if(str[1]!=“E”)
返回false;
else if(str[2]!='H')
返回false;
else if(str[8]!='H'和&str[8]!='R')
返回false;
else if(int.TryParse(str.Substring(4,4),out int number)

return(number>=0&&number您可以尝试使用正则表达式
^SEH.(3000 |[0-2]\d\d\d)[HR]$
不要对
字符串使用
ElementAt
。它有一个内置的
if(str[0]!=“S”)索引器
谢谢你的回答!我发现Jonathon Chase的第一个答案也很有帮助,但是这个答案已经不存在了。对不起,我是新来的,不明白为什么第一个答案会消失。这个第一个答案会被重新发布吗?@Rafael,这个答案是错误的。我指出了问题,Jonathon删除了答案,显然是错误的我将编辑并取消删除它,但从未删除过。仅供参考,一旦你有足够高的代表性,你也可以看到删除的答案。
private static bool ShowPdf(string str)
{
    if (str[0] != 'S')
        return false;
    else if (str[1] != 'E')
        return false;
    else if (str[2] != 'H')
        return false;
    else if (str[8] != 'H' && str[8] != 'R')
        return false;
    else if (int.TryParse(str.Substring(4,4), out int number)
        return (number >= 0 && number <= 3000);
   return true;
}