이 이름을 가진 모든 파일을 검색하려고합니다 : Resources.Designer.pas, Settings.Designer.pas.C# 잘못된 정규식
if (myString.Equals("*.Designer.pas"))
하지만 경우 블록에 입력하지 않습니다 코드의
내 라인입니다. 왜?
이 이름을 가진 모든 파일을 검색하려고합니다 : Resources.Designer.pas, Settings.Designer.pas.C# 잘못된 정규식
if (myString.Equals("*.Designer.pas"))
하지만 경우 블록에 입력하지 않습니다 코드의
내 라인입니다. 왜?
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
대신 .
을 사용하여 현재 디렉터리를 사용할 수도 있습니다.
당신은 주어진 문자열이 ".Designer.pas"로 끝나는 수 있도록
Regex.IsMatch(str, "\.Designer\.pas$")
이 필요합니다.
그건 정규식이 아닙니다. 'String.Equals'는 정확한 값을 검사하고 있습니다. regex와'*'와일드 카드를 사용하려면 ['IsMatch'] (http://msdn.microsoft.com/en-us/library/3y21t6y4.aspx) 메소드를 확인하십시오. – Otiel