2017-05-09 5 views
2

: file_name.filetype하위 문자열이 같은 문자열 (내가 <code>Directory.GetFiles()</code>에서 문자열을 얻을)</p> <pre><code>string temp = "\folder_name\file_name.filetype.[[email protected]].wallet" </code></pre> <p>이 문자열에 가장 좋은 방법은 무엇입니까에서

나는 이런 식으로 뭔가를 할 수 :

const string source = ".[[email protected]].wallet"; 
temp.Substring(0, temp.IndexOf(source, StringComparison.Ordinal)); 

...하지만 문제는 문자열 "mail". [xxxx @ xxxx] .wallet "이 바뀌고 있습니다. 제 말의 문자열 소스는 다음과 같아야합니다 :

const string source = ".[*].wallet"; //so all strings that are in .[all_strings].wallet 

별표 "*"와 같은 간단한 방법이 있습니까? 아니면 부분별로 부분 문자열을 연결하고이 새 문자열을 연결해야합니까?

+0

정규식을 사용하여 구문 분석 할 수 있도록이 코드를 HTML에 저장해야합니다. –

+1

당신이 생각하는대로 할 수있는, 정규 표현식을 사용 –

+0

Ed, HTML? 왜?! –

답변

2

당신이 관심있는 문자열 앞에 백 슬래시를 필요로하는 정규식, 그리고 마지막에 .wallet 다음에 대괄호로 텍스트를 구성 할 수 있습니다. 여기

는 C#을 정규식 API를에 함께 할 수있는 방법은 다음과 같습니다

string temp = @"\folder_name\file_name.filetype.[[email protected]].wallet"; 
var m = Regex.Match(temp, @"(?<=\\)[^.]*\.[^.]*(?=\.\[[^\]]*\].wallet)"); 
if (m.Success) { 
    Console.WriteLine(m.Value); 
} else { 
    Console.WriteLine("<no match>"); 
} 

Demo.

(?<=...)(?=...) 구조는 길이 제로의 모양 미리 봐 숨김 있습니다. 그들은 m.Value에 포함되어 있지 않습니다.

+0

정확히 내가 무엇을 찾고 있어요. – DaniKR

0

.의 두 번째 색인을 검색하여 그 시점 이전의 모든 것을 취할 수 있습니다.

string temp = "\\folder_name\\file_name.filetype.[[email protected]].wallet"; 

var filename = Path.GetFileName(temp); 
var lastIndex = filename.IndexOf('.', filename.IndexOf('.') + 1); 
var fileYouAreLookingFor = filename.Substring(0, lastIndex); 

Working fiddle

+1

나는 정정되거나 downvoted 상관 없지만 왜 대답은 downvoted에 대한 의견을 주셔서 감사합니다. – Igor

+0

누가 왜 당신이 downvoted되었는지, 또는 왜이 질문이 중복되었는지 모르겠다. Peter Duhino 질문에서 중복되는 부분을 찾을 수 있지만 내 문자열이 정확하게 " . [[email protected]].지갑이 너무 정확합니다. 내 문제에 대한 답변입니다. – DaniKR

+0

@DaniKR - 올바른 솔루션을 얻는데 도움이된다고 생각하는 답변도 자유롭게 투표하십시오. – Igor

0

는 또한이를 달성하기 위해 정규식을 사용할 수 있습니다. 다음 중 첫 번째 그룹이 당신이 찾고있는 그룹이어야합니다.

string temp = "\\folder_name\\file_name.filetype.[[email protected]].wallet"; 

var filenameRegex = new Regex("^.*\\\\(.*)\\.\\[.*\\]\\.wallet$"); 
var match = filenameRegex.Match(temp); 

var result = match.Groups[1];