문자열 값이 있으며 엔지니어 이름 만 가져 오려고합니다. 이 경우에는 "CARL HARRISON"입니다.문자열 값을 나누기 C#
"{ Engineer = CARL HARRISON, HandHeldAvailability = H, HASHHT = True, HHTSTATUS = }"
이름은 다른 lenths 일 수 있지만 항상 같은 형식입니다.
문자열 값이 있으며 엔지니어 이름 만 가져 오려고합니다. 이 경우에는 "CARL HARRISON"입니다.문자열 값을 나누기 C#
"{ Engineer = CARL HARRISON, HandHeldAvailability = H, HASHHT = True, HHTSTATUS = }"
이름은 다른 lenths 일 수 있지만 항상 같은 형식입니다.
string regex = @"{ Engineer = (?<Name>.*), HandHeldAvailability";
string input = "{ Engineer = CARL HARRISON, HandHeldAvailability = H, HASHHT = True, HHTSTATUS = }";
string engineerName = "";
Match match = Regex.Match(input, regex);
if(match.Success && match.Groups["Name"] != null)
{
engineerName = match.Groups["Name"].Value;
}
정규식은 입력 문자열 일치 (그렇지 않으면 match.Success이 거짓이 될 것이다)와 쉽게 경우 입력 형식 변경을 변경 할 수 있는지 확인 할 수 있습니다. 다른 부분도 쉽게 일치시킬 수 있습니다.
편집 : 당신이 (즉, 루프에서)이 함수를 많이 호출 할 경우, 당신은 또한 정규식을 컴파일 할 수 :
public class YourDataClass {
private static Regex regex = new Regex(@"{ Engineer = (?<Name>.*), HandHeldAvailability", RegexOptions.Compiled);
public string GetNameFromInput(string input) {
var result = string.Empty;
Match match = regex.Match(input);
if(match.Success && match.Groups["Name"] != null)
{
result = match.Groups["Name"].Value;
}
return result;
}
}
string name = s.Split(',')[0].Split('=')[1].Trim();
설명 : ,
의해 Split
주는이 처음 촬영 소자
{ Engineer = CARL HARRISON
_HandHeldAvailability = H
_HASHHT = True
_HHTSTATUS = }
는 =
의해
{ Engineer = CARL HARRISON
Split
준다 준다 :
{ Engineer_
_CARL HARRISON
,617 내가 선도하고 명확하게하기 위해
_
에 의해 후행 공백을 대체했다
CARL HARRISON
이의 두 번째 요소를 복용
는
_CARL HARRISON
Trim
가 제공되도록 제공합니다.
@Downvoter : 설명해주십시오. – jason
나는 downvoted 사람이 아니었지만 문제는 사람이 "나쁜"문자열 (IndexOutOfRangeException을 던져야 함)을 전달할 경우 쉽게 깨지는 것을 볼 수 있다고 생각합니다. 하지만 일반적으로 명확하고 간결합니다. –
유효성 검사가 문제의 일부인 경우이 방법이 최선의 방법이 아닙니다. 그는 내가 문자열이라고 생각한 문자열에서 이름을 추출하는 방법을 물었습니다. 문자열이 올바르게 형식화되었다는 것을 이미 알고 있다는 의미였습니다. 댓글 주셔서 감사합니다. – jason
멋지게 완료되었습니다. 정규 표현식은이 물건에 아주 좋습니다. – AboutDev
I (over?) 가장 간단한 문자열 매칭/조작 작업을 위해 Regex를 사용합니다. 일단 배웠 으면 중독성이 생깁니다 :-) –