在C#中,我想检查字符串是否以*.js
结尾。字符串是文件的名称,我想知道文件是否是JavaScript。
到目前为止,我只是这样做了:
Assert.IsTrue(Regex.Matches(myFilename, "*.js").Count != 0);
对我而言,这看起来有点过分,因为我需要计算出现次数,而不仅仅是检查是否存在。
此外,代码因此错误而失败:
Message: System.ArgumentException : parsing "*.js" - Quantifier {x,y} following nothing.
知道代码有什么问题吗?
断言字符串是否与给定的正则表达式一致的最简单方法是什么?
答案 0 :(得分:2)
只需使用EndsWith
Assert.IsTrue(myFilename!=null && myFilename.EndsWith(".js"));
答案 1 :(得分:2)
你的正则表达式的问题是:
*
是特殊的量词,它不能跟随任何内容(您的错误来源)。你的意思是"我之前想要什么"。在正则表达式中,这是.*
,但在您的情况下,您甚至不需要它!正则表达式不是强制匹配所有字符串,只是表达部分。
.
也是一个特殊角色。它意味着"任何角色"。您只需要一个实际的点.
字符,因此您也必须将其转义。 :\.
最后,没有精度匹配字符串的结尾。 $
正确的正则表达式" \.js$
" (或" .*\.js$
")而不是" *.js
"
无论如何,要检查一个字符串是否以特定的子字符串结尾,你可以简单地使用string.EndsWith(".js")
,这是@Toshi的回答。在任何方面都可能是一个更好的选择。
答案 2 :(得分:-1)
您可以使用子字符串函数来提取字符串的最后三个字符,并比较它是否等于" .js"或不。
Assert.IsTrue(myFile.Substring(myFile.Length-3)," .js")
除此之外,如前所述,EndsWith也是一种最佳解决方案。