> 백엔드 개발 > C++ > 문자열에서 대문자 앞에 공백을 효율적으로 삽입하는 방법은 무엇입니까?

문자열에서 대문자 앞에 공백을 효율적으로 삽입하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-26 13:39:09
원래의
579명이 탐색했습니다.

How to Efficiently Insert Spaces Before Capital Letters in a String?

대문자 앞에 공백 삽입

대문자와 소문자가 포함된 텍스트를 처리할 때 공백을 추가하여 단어를 구분하는 것이 바람직한 경우가 많습니다. 대문자 앞에. 이렇게 하면 가독성이 향상되고 다른 단어를 더 쉽게 구별할 수 있습니다.

정규식 방법

일반적인 접근 방식 중 하나는 정규식을 사용하여 대문자를 검색하고 바꾸는 것입니다. 소문자로 시작됩니다. 다음 정규식은 소문자 앞에 오는 모든 대문자와 일치합니다.

[A-Z]
로그인 후 복사

이러한 대문자 앞에 공백을 삽입하려면 다음 대체 패턴을 사용할 수 있습니다.

\s<pre class="brush:php;toolbar:false">System.Text.RegularExpressions.Regex.Replace(value, "[A-Z]", "\s<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();
}
로그인 후 복사
")

이것은 대체 패턴은 s 문자 클래스를 사용하여 일치하는 대문자 앞에 공백을 삽입하고 $0은 일치하는 하위 문자열을 나타냅니다. 다음은 이 정규 표현식을 사용하는 예입니다.

수동 방법

정규 표현식은 효과적일 수 있지만 성능 측면에서 복잡하고 비용이 많이 들 수도 있습니다. 다른 접근 방식은 문자열을 문자별로 수동으로 반복하고 필요에 따라 공백을 삽입하는 것입니다. 다음 코드 조각은 이 방법을 보여줍니다.

이 코드는 문자열의 각 문자를 반복하여 대문자인지 확인합니다. 앞에 소문자가 있는 경우(preserveAcronyms 매개변수가 true로 설정되고 이전 문자도 대문자인 경우 제외) 공백이 삽입됩니다.

성능 고려 사항

정규식 방법은 특히 큰 문자열의 경우 수동 방법보다 상당히 느릴 수 있습니다. 그러나 수동 방법은 더 복잡하고 일부 개발자의 경우 읽기가 어려울 수 있습니다. 궁극적으로 이 두 가지 방법 중 가장 좋은 선택은 특정 프로젝트의 성능 요구 사항과 가독성 기본 설정에 따라 달라집니다.

위 내용은 문자열에서 대문자 앞에 공백을 효율적으로 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿