Java를 사용하여 문자열을 가로채는 방법
使用JDK截断一个字符串
Java提供了许多方便的方法来截断一个 String 。让我们来看看。
使用 String 的 substring() 方法
String 类有一个方便的方法,叫做 substring ,正如其名称所示 , substring() 返回指定索引之间的 String 部分。
让我们来看看它的运行情况。
static String usingSubstringMethod(String text, int length) { if (text.length() <= length) { return text; } else { return text.substring(0, length); } }
在上面的例子中,如果指定的 length 大于 text 的长度,我们返回 text 本身。这是因为 传递给 substring() 的 length 大于 String 的字符数会导致 IndexOutOfBoundsException 。
否则,我们将返回从索引0开始并延伸到--但不包括--索引 length 的字符的子串。
让我们用一个测试案例来确认这一点。
static final String TEXT = "Welcome to javanorth.cn"; @Test public void givenStringAndLength_whenUsingSubstringMethod_thenTrim() { assertEquals(TrimStringOnLength.usingSubstringMethod(TEXT, 10), "Welcome to"); }
正如我们所看到的, 的起始索引是包容的,结束索引是排他的 。因此, 索引 length 处的字符将不包括在返回的子串中。
使用 String 的 split() 方法
另一种截断 String 的方法是使用 split() 方法,它使用正则表达式将 String 分割成若干部分。
这里我们将使用一个叫做 positive lookbehind 的正则表达式特征来匹配从 String 开始的指定数量的字符。
static String usingSplitMethod(String text, int length) { String[] results = text.split("(?<=\\G.{" + length + "})"); return results[0]; }
results 的第一个元素将是我们截断的 String ,如果 length 长于 text ,则是原始的 String 。
让我们测试一下我们的方法。
@Test public void givenStringAndLength_whenUsingSplitMethod_thenTrim() { assertEquals(TrimStringOnLength.usingSplitMethod(TEXT, 13), "Welcome to ba"); }
使用 Pattern 类
同样, 我们可以使用 Pattern 类来编译一个正则表达式,该表达式可以匹配 String 的开头,直至指定的字符数 。
例如,让我们使用 {1," + length + "}. 这个正则表达式至少匹配一个,最多匹配 length 个字符。
static String usingPattern(String text, int length) { Optional<String> result = Pattern.compile(".{1," + length + "}") .matcher(text) .results() .map(MatchResult::group) .findFirst(); return result.isPresent() ? result.get() : EMPTY; }
正如我们在上面看到的,在将我们的正则表达式编译成 Pattern 后,我们可以使用 Pattern的 matcher() 方法来根据该正则表达式解释我们的 String 。然后我们就可以将结果分组,并返回第一个结果,也就是我们截断的 String 。
现在让我们添加一个测试案例来验证我们的代码是否如预期那样工作。
@Test public void givenStringAndLength_whenUsingPattern_thenTrim() { assertEquals(TrimStringOnLength.usingPattern(TEXT, 19), "Welcome to javanorth"); }
使用 CharSequence 的 codePoints() 方法
Java 9提供了一个 codePoints() 方法来将一个 String 转换为一个码点值流。
让我们看看如何使用这个方法与 Stream API相结合来截断一个字符串。
static String usingCodePointsMethod(String text, int length) { return text.codePoints() .limit(length) .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .toString(); }
在这里,我们使用 limit() 方法来限制 Stream 的长度 。然后我们使用 StringBuilder 来建立我们的截断字符串。
接下来,让我们验证一下我们的方法是否有效。
@Test public void givenStringAndLength_whenUsingCodePointsMethod_thenTrim() { assertEquals(TrimStringOnLength.usingCodePointsMethod(TEXT, 6), "Welcom"); }
Apache Commons 库
Apache Commons Lang 库包括一个 StringUtils 类,用于操作 String。
首先,让我们把Apache Commons dependency添加到我们的 pom.xml 。
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency>
使用 StringUtils的left() 方法
StringUtils 有一个有用的 静态 方法叫 left() 。 StringUtils.left() 以一种安全的方式返回 String 最左边的指定字符数: 。
static String usingLeftMethod(String text, int length) { return StringUtils.left(text, length); }
使用 StringUtils 的 truncate() 方法
另外,我们可以使用 StringUtils.truncate() 来达到同样的目的。
public static String usingTruncateMethod(String text, int length) { return StringUtils.truncate(text, length); }
Guava库
除了使用核心Java方法和Apache Commons库来截断一个 String 之外,我们还可以使用 Guava。让我们首先把Guava的 dependency 添加到我们的 pom.xml 文件中。
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>31.0.1-jre</version> </dependency>
现在我们可以使用Guava的 Splitter 类来截断我们的 String 。
static String usingSplitter(String text, int length) { Iterable<String> parts = Splitter.fixedLength(length) .split(text); return parts.iterator() .next(); }
我们使用 Splitter.fixedLength() 将我们的 String 分割成多个给定长度的片段。然后,我们返回结果中的第一个元素。
위 내용은 Java를 사용하여 문자열을 가로채는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java의 난수 생성기 안내. 여기서는 예제를 통해 Java의 함수와 예제를 통해 두 가지 다른 생성기에 대해 설명합니다.

Java의 Weka 가이드. 여기에서는 소개, weka java 사용 방법, 플랫폼 유형 및 장점을 예제와 함께 설명합니다.

Java의 Smith Number 가이드. 여기서는 정의, Java에서 스미스 번호를 확인하는 방법에 대해 논의합니다. 코드 구현의 예.

이 기사에서는 가장 많이 묻는 Java Spring 면접 질문과 자세한 답변을 보관했습니다. 그래야 면접에 합격할 수 있습니다.

Java 8은 스트림 API를 소개하여 데이터 컬렉션을 처리하는 강력하고 표현적인 방법을 제공합니다. 그러나 스트림을 사용할 때 일반적인 질문은 다음과 같은 것입니다. 기존 루프는 조기 중단 또는 반환을 허용하지만 스트림의 Foreach 메소드는이 방법을 직접 지원하지 않습니다. 이 기사는 이유를 설명하고 스트림 처리 시스템에서 조기 종료를 구현하기위한 대체 방법을 탐색합니다. 추가 읽기 : Java Stream API 개선 스트림 foreach를 이해하십시오 Foreach 메소드는 스트림의 각 요소에서 하나의 작업을 수행하는 터미널 작동입니다. 디자인 의도입니다

Java의 TimeStamp to Date 안내. 여기서는 소개와 예제와 함께 Java에서 타임스탬프를 날짜로 변환하는 방법에 대해서도 설명합니다.

Java는 초보자와 숙련된 개발자 모두가 배울 수 있는 인기 있는 프로그래밍 언어입니다. 이 튜토리얼은 기본 개념부터 시작하여 고급 주제를 통해 진행됩니다. Java Development Kit를 설치한 후 간단한 "Hello, World!" 프로그램을 작성하여 프로그래밍을 연습할 수 있습니다. 코드를 이해한 후 명령 프롬프트를 사용하여 프로그램을 컴파일하고 실행하면 "Hello, World!"가 콘솔에 출력됩니다. Java를 배우면 프로그래밍 여정이 시작되고, 숙달이 깊어짐에 따라 더 복잡한 애플리케이션을 만들 수 있습니다.
