대/소문자 전환에 공백 삽입
목표는 "ThisStringHasNoSpacesButItDoesHaveCapitals"와 같은 문자열을 "This String Has No Spaces But It Does"로 변환하는 것입니다. 대문자 앞에 공백을 추가하여 대문자 있음"
정규식 접근법
정규 표현식은 실제로 이러한 목적으로 사용될 수 있습니다. 정규식 "[A-Z]"는 대문자를 식별하고 " $0"은 각 일치 항목 앞에 공백을 추가합니다.
System.Text.RegularExpressions.Regex.Replace(value, "[A-Z]", " <pre class="brush:php;toolbar:false">string AddSpacesToSentence(string text, bool preserveAcronyms) { if (string.IsNullOrWhiteSpace(text)) return string.Empty; StringBuilder newText = new StringBuilder(text.Length * 2); newText.Append(text[0]); for (int i = 1; i < text.Length; i++) { if (char.IsUpper(text[i])) if ((text[i - 1] != ' ' && !char.IsUpper(text[i - 1])) || (preserveAcronyms && char.IsUpper(text[i - 1]) && i < text.Length - 1 && !char.IsUpper(text[i + 1]))) newText.Append(' '); newText.Append(text[i]); } return newText.ToString(); }")
그러나 정규식은 계산 비용이 많이 들고 복잡한 패턴의 경우 읽기가 어려울 수 있습니다.
반복 접근 방식
대안 접근 방식은 문자열을 반복하는 것입니다. 문자별:
이 함수는 소문자에서 대문자로의 전환을 확인하고 선택적으로 약어를 처리합니다.
성능 비교
성능 -반복적 접근 방식은 정규식 접근 방식보다 훨씬 뛰어나며 92.4%를 나타냅니다. 1,000개의 연속된 대문자로 구성된 문자열의 실행 시간이 단축됩니다. 속도를 위해 코드 단순성을 절충합니다.
결국 이러한 접근 방식 중 선택은 각 프로젝트의 특정 성능 및 가독성 요구 사항에 따라 달라집니다.
위 내용은 문자열에서 대문자 앞에 공백을 효율적으로 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!