다음이 있습니다.
string test = "9586-202-10072"
-10072가되도록 모든 문자를 최종 오른쪽에 가져 오려면 어떻게해야합니까? 문자 수는 항상 마지막 대시의 오른쪽에 다릅니다.
어떻게 할 수 있습니까?
다음이 있습니다.
string test = "9586-202-10072"
-10072가되도록 모든 문자를 최종 오른쪽에 가져 오려면 어떻게해야합니까? 문자 수는 항상 마지막 대시의 오른쪽에 다릅니다.
어떻게 할 수 있습니까?
답변:
당신은 마지막의 위치를 얻을 수 -와를 str.LastIndexOf('-'). 따라서 다음 단계는 분명합니다.
var result = str.Substring(str.LastIndexOf('-') + 1);
수정 :
Brian이 아래에 언급했듯이 대시가없는 문자열에 이것을 사용하면 동일한 문자열이 반환됩니다.
LastIndexOf아무것도 발견되지 않으면 -1을 반환합니다 (이것은 문서화 된 동작이므로 그것에 의존하는 것이 안전합니다). str.Substring(1-1)와 같은 문자열을 제공합니다 str. 놀라운 일이 아닙니다.
LINQ를 사용하고 명시 적 구문 분석을 절약 할 수 있습니다.
string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();
Console.WriteLine(lastFragment);
이 게시물이 46,000 회 이상 조회 된 것을 알 수 있습니다. 46,000 명의 시청자 중 많은 사람들이 단순히 파일 이름을 원하기 때문에이 질문을하고있을 것입니다 ... 그리고 at 기호를 사용하여 부분 문자열을 축 어적으로 만들 수 없다면이 답변은 토끼 구멍이 될 수 있습니다.
단순히 파일 이름을 얻고 싶다면 여기에 언급해야 할 간단한 대답이 있습니다. 질문에 대한 정확한 답이 아니더라도.
result = Path.GetFileName(fileName);
참조 https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx를
String.lastIndexOf 메서드를 참조하십시오.
str가 null이거나 하이픈이 전혀 포함되지 않은 경우 에만 실패 합니다. (하이픈이없는 경우 던지지 않고 전체 소스 문자열을 반환합니다.)