C#에서 간단한 Get String (끝에서 숫자 무시)
-
18-09-2019 - |
문제
나는 Regex가 과잉이라고 생각합니다. 또한 코드를 작성하는 데 시간이 걸립니다 (지금은 Regex를 알고 있다는 사실을 배워야한다고 생각합니다).
영숫자 문자열에서 문자열을 분리하는 가장 간단한 방법은 무엇입니까? 항상 llllddddd입니다. 나는 글자 (l) 만 원합니다. 일반적으로 1 또는 2 글자 만 원합니다.
해결책
트리먼트:
string result = input.TrimEnd(new char[]{'0','1','2','3','4','5','6','7','8','9'});
// I'm sure using LINQ and Range can simplify that.
// also note that a string like "abc123def456" would result in "abc123def"
그러나 재선도 간단합니다.
string result = Regex.Match(input,@"^[^\d]+").Value;
다른 팁
나는 Michael Stum의 Regex 답변을 선호하지만 여기에 LINQ 접근 방식도 있습니다.
string input = "ABCD1234";
string result = new string(input.TakeWhile(c => Char.IsLetter(c)).ToArray());
숫자와 일치하는 정규 표현식을 사용하여 제거 할 수 있습니다.
input = Regex.Replace(input, "\d+$", String.Empty);
구식 루프도 나쁘지 않으며 실제로 가장 빠른 솔루션이어야합니다.
int len = input.Length;
while (input[len-1] >= '0' && input[len-1] <= '9') len--;
input = input.Substring(0, len);
그들은 그것을 가지고 있습니다 - 좋은 솔루션에 주목하십시오. 좋은 솔루션에 주목하십시오 문자열의 프론트 엔드에 무엇이든. 내가 지금 사용하는 디자인 패러다임은 구분 기호 문자가 아니며, 구분 기호 문자, 오프닝 버팀대가 뒤 따릅니다.
결과적으로 결과 세트에없는 구분 기호 문자가 필요합니다. 즉, 데이터-변형기 예를 들어, 0x0019 / 0x0018 등의 ASCII 값을 잘 확립 할 수 있습니다.
제휴하지 않습니다 StackOverflow