Guava 6 - 문자열 처리:분할, 연결, 채우기
커넥터[Joiner]
문자열의 서열을 구분자로 연결하는 것도 불필요한 번거로움을 만날 수 있다.문자열 서열에null이 포함되어 있으면 연결 작업이 더욱 어려울 것입니다.Fluent 스타일의 Joiner를 사용하면 연결 문자열을 쉽게 만들 수 있습니다.
Joiner joiner = Joiner.on("; ").skipNulls();
return joiner.join("Harry", null, "Ron", "Hermione");
위 코드가 Harry로 반환됩니다.Ron; Hermione”.또한useForNull (String) 방법은 null을 대체하는 문자열을 지정할 수 있으며, skipNull () 방법과는 달리null을 무시할 수 있습니다.Joiner는 대상 유형을 연결하는 데도 사용할 수 있습니다. 이 경우 대상의 tostring () 값을 연결합니다.
Joiner.on(",").join(Arrays.asList(1, 5, 7)); // returns "1,5,7"
경고:joiner 실례는 항상 변할 수 없습니다.joiner 목표의 의미를 정의하는 설정 방법은 항상 새로운joiner 실례를 되돌려줍니다.이로써 Joiner 실례는 모두 라인이 안전합니다. static final 상수로 정의할 수 있습니다.
분할기 [splitter]
JDK 내에 만들어진 문자열 분할 도구에는 일부 이상한 특성이 있습니다.예를 들어, String.split은 끝부분의 구분자를 몰래 버렸습니다.질문: ",a,,b,"split (",") 반환?
Splitter.on(',')
.trimResults()
.omitEmptyStrings()
.split("foo,bar,, qux");
위 코드는 "foo", "bar", "qux"를 포함하는 Iterable로 반환됩니다.Splitter는 모든 모드, 문자, 문자열 또는 문자 일치기에 따라 분할되도록 설정할 수 있습니다.
분할기 공장
메서드
묘사
예제
Splitter.on(char)
단일 문자로 분할
Splitter.on(‘;’)
Splitter.on(CharMatcher)
문자 일치 프로그램별로 분할
Splitter.on(CharMatcher.BREAKING_WHITESPACE)
Splitter.on(String)
문자열로 나누기
Splitter.on(“, “)
Splitter.on(Pattern)Splitter.onPattern(String)
정규 표현식에 따라 나누다
Splitter.onPattern(“\r?”)
Splitter.fixedLength(int)
고정 길이로 나누기;마지막 세그먼트는 지정된 길이보다 짧을 수 있지만 비어 있지 않습니다.
Splitter.fixedLength(3)
분할기 수정자
메서드
묘사
omitEmptyStrings()
결과에서 빈 문자열 자동 무시
trimResults()
결과 문자열의 선행 및 후행 공백 제거
trimResults(CharMatcher)
주어진 일치기, 결과 문자열의 전도 일치 문자와 꼬리 일치 문자를 제거합니다
limit(int)
분할된 문자열 수 제한
분할기가 List로 돌아가려면 Lists를 사용하십시오.newArrayList(splitter.split(string)) 또는 유사한 메서드입니다.경고: splitter 실례는 항상 변할 수 없습니다.splitter 목표의 의미를 정의하는 설정 방법은 항상 새로운 splitter 실례를 되돌려줍니다.이것은 splitter의 실례를 모두 안전하게 합니다. static final 상수로 정의할 수 있습니다.
문자 일치기 [CharMatcher]
이전 Guava 버전에서 StringUtil류는 미친 듯이 팽창했다. 문자열을 처리하는 방법은 all Ascii,collapse,collapseControlChars,collapseWhitespace,index OfChars,last Index NotOf,num Shared Chars,remove Chars,remove Crlf,replace Chars,retain All Chars,strip,strip And Collapse,strip Non Digits가 많았다.이러한 모든 접근 방식은
이 수렁을 수습하기 위해 CharMatcher를 개발했습니다.
직관적으로, 당신은 CharMatcher 실례가 숫자나 공백 문자와 같은 어떤 종류의 문자를 대표한다고 생각할 수 있다.사실 CharMatcher의 실례는 문자에 대한 브리의 판단이다. CharMatcher는Predicate를 실현했지만 모든 공백 문자나 모든 소문자와 유사하다는 수요가 너무 보편적이어서 Guava가 이 API를 만들었다.
그러나CharMatcher를 사용하는 장점은 문자에 대해 특정한 동작을 할 수 있는 일련의 방법을 제공하는 데 있다. 즉, 편집 [trim], 접기 [collapse], 제거 [remove], 보존 [retain] 등이다.CharMatcher 인스턴스는 먼저 개념 1을 나타냅니다. 일치하는 문자는 어떻게 계산합니까?그리고 많은 조작 개념을 제공했다. 2: 이 일치하는 문자를 어떻게 처리합니까?이러한 설계로 인해 API 복잡성의 선형 증가는 유연성과 기능 양방면의 증가를 가져올 수 있다.
String noControl = CharMatcher.JAVA_ISO_CONTROL.removeFrom(string); // control
String theDigits = CharMatcher.DIGIT.retainFrom(string); //
String spaced = CharMatcher.WHITESPACE.trimAndCollapseFrom(string, ' ');
// ,
String noDigits = CharMatcher.JAVA_DIGIT.replaceFrom(string, "*"); // *
String lowerAndDigit = CharMatcher.JAVA_DIGIT.or(CharMatcher.JAVA_LOWER_CASE).retainFrom(string);
//
참고: CharMatcher는 char 유형이 나타내는 문자만 처리합니다.0x10000에서 0x10FFFF까지의 유니코드 추가 문자를 이해할 수 없습니다.이 논리 문자들은 [surrogate pairs] 형식으로 문자열을 인코딩하고,CharMatcher는 이 논리 문자를 두 개의 독립된 문자로만 볼 수 있다.
문자 일치기 가져오기
CharMatcher의 상수는 대부분의 문자 일치 요구 사항을 충족합니다.
ANY
NONE
WHITESPACE
BREAKING_WHITESPACE
INVISIBLE
DIGIT
JAVA_LETTER
JAVA_DIGIT
JAVA_LETTER_OR_DIGIT
JAVA_ISO_CONTROL
JAVA_LOWER_CASE
JAVA_UPPER_CASE
ASCII
SINGLE_WIDTH
기타 문자 일치기를 가져오는 일반적인 방법은 다음과 같습니다.
메서드
묘사
anyOf(CharSequence)
매거 일치 문자.CharMatcher와 같습니다.anyOf 소문자 영어 모음 일치
is(char)
주문서에 문자를 일치시키다.
inRange(char, char)
CharMatcher와 같은 주어진 문자 범위가 일치합니다.inRange(‘a’, ‘z’)
이 밖에CharMatcher는negate(), and(CharMatcher)와or(CharMatcher) 방법도 있다.
문자 일치기 사용
CharMatcher는 CharSequence의 특정 문자를 조작하는 다양한 방법을 제공합니다.그 중에서 가장 자주 사용하는 나열은 다음과 같다.
메서드
묘사
collapseFrom(CharSequence, char)
각 그룹의 연속적인 일치 문자를 특정 문자로 바꿉니다.예를 들어 WHITESPACE.collapseFrom (string, '') 은 문자열의 연속 공백 문자를 하나의 공백으로 대체합니다.
matchesAllOf(CharSequence)
문자열의 모든 문자가 일치하는지 테스트합니다.
removeFrom(CharSequence)
문자 시퀀스에서 일치하는 문자를 모두 제거합니다.
retainFrom(CharSequence)
문자 시퀀스에서 일치하는 문자를 유지하고 다른 문자를 제거합니다.
trimFrom(CharSequence)
문자열의 선행 일치 문자와 후행 일치 문자를 제거합니다.
replaceFrom(CharSequence, CharSequence)
일치하는 문자를 특정 문자열로 대체합니다.
이 모든 방법은 String으로 되돌아옵니다. matches AllOf를 제외하고는boolean으로 되돌아옵니다.
문자 세트 [Charsets]
이렇게 문자 세트 처리를 하지 마십시오.
try {
bytes = string.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
// how can this possibly happen?
throw new AssertionError(e);
}
이렇게 써 보세요.
bytes = string.getBytes(Charsets.UTF_8);
Charsets는 모든 Java 플랫폼에서 지원되는 6가지 문자 세트에 대해 상수 참조를 제공합니다.이름 대신 이러한 상수를 사용하여 문자 세트 인스턴스를 가져옵니다.
대소문자 형식 [CaseFormat]
CaseFormat는 다양한 ASCII 대소문자 규범 사이에서 문자열을 쉽게 변환하는 데 사용됩니다. 예를 들어 프로그래밍 언어의 명칭 규범입니다.CaseFormat에서 지원하는 형식은 다음과 같습니다.
서식
예제
LOWER_CAMEL
lowerCamel
LOWER_HYPHEN
lower-hyphen
LOWER_UNDERSCORE
lower_underscore
UPPER_CAMEL
UpperCamel
UPPER_UNDERSCORE
UPPER_UNDERSCORE
CaseFormat의 사용법은 매우 직접적입니다.
CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "CONSTANT_NAME")); // returns "constantName"
우리 CaseFormat는 코드 생성기를 작성할 때와 같은 경우에 특히 유용합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.