Java字符串中有多個(gè)分隔符的處理方式
若字符串中存在多個(gè)分隔符,你可以使用正則表達(dá)式來(lái)定義分隔符,從而對(duì)字符串進(jìn)行分割。
下面詳細(xì)介紹幾種常見(jiàn)的處理方式。
方法一:使用正則表達(dá)式分割字符串
在 Java 里,String
類的 split
方法能夠接收一個(gè)正則表達(dá)式作為分隔符。
你可以把多個(gè)分隔符組合成一個(gè)正則表達(dá)式。
例如,若要以空格、逗號(hào)和分號(hào)作為分隔符,可以使用正則表達(dá)式 [ ,;]
。
以下是示例代碼:
public class SplitStringWithMultipleDelimiters { public static void main(String[] args) { String input = "apple, banana; cherry orange"; // 使用正則表達(dá)式 [ ,;] 作為分隔符 String[] parts = input.split("[ ,;]"); for (String part : parts) { if (!part.isEmpty()) { System.out.println(part); } } } }
代碼解釋
input.split("[ ,;]")
:[ ,;]
是一個(gè)字符類正則表達(dá)式,表示匹配空格、逗號(hào)或分號(hào)。split
方法會(huì)根據(jù)這個(gè)正則表達(dá)式將字符串分割成多個(gè)部分。if (!part.isEmpty())
:由于分割后可能會(huì)產(chǎn)生空字符串,所以使用該條件過(guò)濾掉空字符串。
方法二:使用 Pattern 和 Matcher 類
你也可以使用 java.util.regex
包中的 Pattern
和 Matcher
類來(lái)手動(dòng)處理分割邏輯,這種方式更靈活,能處理更復(fù)雜的情況。
以下是示例代碼:
import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class SplitStringWithPatternMatcher { public static void main(String[] args) { String input = "apple, banana; cherry orange"; // 定義正則表達(dá)式,匹配分隔符 Pattern pattern = Pattern.compile("[ ,;]"); Matcher matcher = pattern.matcher(input); List<String> parts = new ArrayList<>(); int startIndex = 0; while (matcher.find()) { int endIndex = matcher.start(); if (endIndex > startIndex) { parts.add(input.substring(startIndex, endIndex)); } startIndex = matcher.end(); } if (startIndex < input.length()) { parts.add(input.substring(startIndex)); } for (String part : parts) { System.out.println(part); } } }
代碼解釋
Pattern.compile("[ ,;]")
:編譯一個(gè)正則表達(dá)式,用于匹配空格、逗號(hào)或分號(hào)。Matcher matcher = pattern.matcher(input)
:創(chuàng)建一個(gè)Matcher
對(duì)象,用于在輸入字符串中查找匹配的分隔符。while (matcher.find())
:循環(huán)查找輸入字符串中的分隔符,每次找到分隔符后,提取分隔符之前的子字符串并添加到parts
列表中。if (startIndex < input.length())
:處理最后一個(gè)分隔符之后的子字符串。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java日期時(shí)間格式化操作DateUtils 的整理
這篇文章主要介紹了Java日期時(shí)間格式化操作DateUtils 的整理的相關(guān)資料,這里總結(jié)了java日期格式化的操作,需要的朋友可以參考下2017-07-07比較Java數(shù)組和各種List的性能小結(jié)
這篇文章主要是分別對(duì)Java數(shù)組、ArrayList、LinkedList和Vector進(jìn)行隨機(jī)訪問(wèn)和迭代等操作,并比較這種集合的性能。有需要的可以參考借鑒。2016-08-08SpringBoot圖文并茂講解Lombok庫(kù)的安裝與使用
Lombok想要解決了的是在我們實(shí)體Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不會(huì)用到,但是某些時(shí)候仍然需要復(fù)寫,以期方便使用的方法;在使用Lombok之后,將由其來(lái)自動(dòng)幫你實(shí)現(xiàn)代碼生成2022-06-06feign調(diào)用返回object類型轉(zhuǎn)換方式
這篇文章主要介紹了feign調(diào)用返回object類型轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06使用@Transactional 設(shè)置嵌套事務(wù)不回滾
這篇文章主要介紹了使用@Transactional 設(shè)置嵌套事務(wù)不回滾問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07