我想用這個名字搜索所有文件:Resources.Designer.pas,Settings.Designer.pas。C#不正確的正則表達式
我的代碼行是:
if (myString.Equals("*.Designer.pas"))
,但它並沒有在if塊進入。爲什麼?
我想用這個名字搜索所有文件:Resources.Designer.pas,Settings.Designer.pas。C#不正確的正則表達式
我的代碼行是:
if (myString.Equals("*.Designer.pas"))
,但它並沒有在if塊進入。爲什麼?
if (myString.EndsWith(".Designer.pas"))
因爲您引用了文字字符串「* .Designer.pas」。這可能不存在。我建議你嘗試搜索「.Designer.pas」這樣你就會得到你正在尋找的結果。
在正則表達式中,.
是一個特殊字符,意思是'匹配任何字符'。如果你想明確地匹配一段時間,你將不得不逃脫它。這應該工作:
string pattern = @".*\.Designer\.pas";
if (Regex.IsMatch(myString, pattern))
欲瞭解更多信息,請看看this MSDN文章。然而,以上將匹配foo.Designer.pas.bar
的任何形式,其中foo
和bar
表示任何字符串。如果你想明確地匹配.Designer.pas
結尾的文件,你應該使用這樣的事情:
string pattern = @".*\.Designer\.pas$";
if (Regex.IsMatch(myString, pattern))
的$
將指示正則表達式引擎匹配的字符串,並確保它是字符串的最後一部分。
我收到編譯器錯誤無法識別的序列。 –
我已經對答案進行了修改。 – npinti
我想你也可以使用:
if (myString.EndsWith(".Designer.pas",
StringComparison.InvariantCultureIgnoreCase))
如果您正在尋找在符合特定模式的文件系統的文件列表,你可以使用Directory.GetFiles
:
foreach(string f in Directory.GetFiles("C:\\YourPath", "*.Designer.pas"))
{
...
}
您也可以使用.
而不是C:\\YourPath
來使用當前目錄。
你需要
Regex.IsMatch(str, "\.Designer\.pas$")
,以確保一個給定的字符串 「.Designer.pas」 結束。
這不是一個正則表達式。 'String.Equals'正在檢查確切的值。如果您想使用正則表達式和'*'通配符,請檢查['IsMatch'](http://msdn.microsoft.com/zh-cn/library/3y21t6y4.aspx)方法。 – Otiel