문제

나는 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 값을 잘 확립 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top