我有一个字符串数组存储用户输入,我想检查输入用户是否只包含特定的单词END
,我不介意单词之前或之后是否有空格,例如用户可以输入类似END
或“END”或“END”或“END”的单词。我真的不在乎单词之前或之后有多少空格我只想检查输入字符串是否只包含单词END
而不考虑空格。
我试过了
Regex regex_ending_char = new Regex(@"^END|^\s+END$|^END+\s$");
// to compare the word "END" only nothing before it nor after it -
// space is of anywhere before or after the word
Match Char_Instruction_match = regex_ending_char.Match(Instruction_Separator[0]);
if (!Char_Instruction_match.Success) // True if word doesn't end with "END"
{
richTextBox2.Text += "Error in line " + (LineNumber + 1) + ", Code must end with 'END'" + Environment.NewLine;
}`
我也试过
Regex regex_ending_char = new Regex(@"^END|^\s+END$|^END+\s$");
// to compare the word "END" only nothing before it nor after
// it - space is of anywhere before or after the word
Regex.Replace(Instruction_Separator[0], @"\s+", "");
Match Char_Instruction_match = regex_ending_char.Match(Instruction_Separator[0]);
if (!Char_Instruction_match.Success) // True if word doesn't end with "END"
{
richTextBox2.Text += "Error in line " + (LineNumber + 1) + ", Code must end with 'END'" + Environment.NewLine;
}`
问题是我只需要检查数组的第一个元素Instruction_Separator[0]
而不是任何其他元素。END
因此,如果用户在“END”之类的单词之前输入一个空格,那么Instruction_Separator
数组就变成Instruction_Separator[0] = " ", Instruction_Separator[1] = END
了,因此即使用户输入了正确的字符串,代码也会进入 if 条件,他只在开头输入了一个空格,我没有问题如果单词前后有空格。
谢谢大家的回复,我尊重大家的回答。我要做的是构建一个汇编器,我必须检查语法错误,并且用户输入中的注释是可以的。例如,如果用户输入如下:
ORG 100 //Begin at memory location 100
LDA A // Load A
A, DEC 83 // A has a decimal value of 83
END // End the code
那么没有任何语法错误,我可以给出一个结果。
此外,如果用户在每行之前添加空格,那也没关系
ORG 100 //Begin at memory location 100
LDA A // Load A
A, DEC 83 // A has a decimal value of 83
END // End the code
所以我想检查每一行是否包含正确的语法,我并不关心每一行的正确格式之前或之后的任何空格。
用户语法错误类似于:
OR G 100 //Begin at memory location 100
LDA A // Load A
A, DEC 83 // A has a decimal value of 83
EN To end the code
请注意,ORG 写成“OR G”,这是错误的,END 也写成“EN”,用户忘记在注释“结束代码”之前放置“//”
所以我需要做的是检查最后一行是否包含“END”这个词,如果有“//”那么它后面的内容是注释。但是如果用户想在一行中添加注释,他必须输入“//”。如果他不想添加评论,那不是必须的。任何想法我如何使用正则表达式来做到这一点,正如我上面提到的我试过Regex regex_ending_char = new Regex(@"^END|^\s+END$|^END+\s$");
但我似乎没有正确工作
提前感谢您的回复。