C \ # 에서 지정 한 길이 의 중국어 문자열 을 캡 처 합 니 다 (효율 2500 배 향상)
2059 단어 길이 지정
국제 관례 에 따 르 면 인터넷 에서 검색 해 보 니 크게 두 개의 절단 알고리즘 을 얻 었 습 니 다. 1. 시작 위치 에서 문 자 를 얻 습 니 다 - > 정규 표현 식 으로 일치 합 니 다 - > 최종 문자열 로 연결 합 니 다.(이것 은 널리 퍼 지 는 방법 이자 효율 이 가장 낮은 방법 입 니 다.) 2. 시작 위치 에서 문 자 를 얻 습 니 다 - > 하나씩 ASCII 로 비교 - > 최종 문자열 로 연결 합 니 다.
이에 비해 알고리즘 2 는 알고리즘 1 보다 높 습 니 다. 왜냐하면 ASCII 는 정규 표현 식 보다 집행 효율 이 높 기 때 문 입 니 다.그러나 최종 적 으로 저 는 알고리즘 2 를 사용 하지 않 고 진일보 한 최적화 를 했 습 니 다.
public static string CutStr(string str, int len)
{
if (str == null || str.Length == 0 || len <= 0)
{
return string.Empty;
}
int l = str.Length;
#region
int clen = 0;
while (clen < len && clen < l)
{
// , 。
if ((int)str[clen] > 128) { len--; }
clen++;
}
#endregion
if (clen < l)
{
return str.Substring(0, clen) + "...";
}
else
{
return str;
}
}
마지막 으로 비 교 를 통 해 널리 알려 진 알고리즘 1 은 100 회 실행 하면 700 여 밀리초 가 필요 하고 나의 알고리즘 은 700 밀리초 에 250000 회 실행 할 수 있 습 니 다!(주: 실제 운행 시간 은 원본 문자열 의 길이, 캡 처 길이, 컴퓨터 성능 과 관련 이 있 습 니 다. 그러나 같은 조건 에서 의 효율 비율 은 기본적으로 안정 적 입 니 다.)