å¦ä½å¨Java䏿åå符串ï¼è¯¦è§£Stringç±»çsplit()æ¹æ³
âå¥ï¼ææè§å符串æå没ä»ä¹å¯è®²çåï¼ç´æ¥ä¸ String ç±»ç split() æ¹æ³ä¸å°±å¯ä»¥äºï¼âä¸å¦¹æ¯«ä¸å®¢æ°å°è¯´ã
âåå¦ä½ ççè¿ä¹è§å¾ï¼é£å¯è¦æ³¨æäºï¼äºæ è¿æ²¡è¿ä¹ç®åãâæå¾®ç¬ç说ã
åå¦ç°å¨æè¿æ ·ä¸ä¸²å符åºåâæ²é»çäºï¼ä¸ææè¶£çç¨åºåâï¼éè¦æç §ä¸æéå·âï¼âè¿è¡æåï¼è¿æå³ç第ä¸ä¸²å符åºå为éå·åé¢çâæ²é»çäºâï¼ç¬¬äºä¸²å符åºå为éå·åé¢çâ䏿æè¶£çç¨åºåâã
âè¿ä¸çäºæ²¡è¯´åï¼å¥ï¼âè¿æ²¡çæè¯´ï¼ä¸å¦¹å°±ææäºæã
âå«çæ¥åï¼çå¥è¯´å®ãâæä¾ç¶ä¿æçå¾®ç¬ç»§ç»è¯´ï¼â卿åä¹åï¼è¦å è¿è¡æ£æ¥ï¼å¤æä¸ä¸è¿ä¸²å符æ¯å¦å å«éå·ï¼å¦ååºè¯¥æåºå¼å¸¸ãâ
public class Test {
public static void main(String[] args) {
String cmower = "æ²é»çäºï¼ä¸ææè¶£çç¨åºå";
if (cmower.contains("ï¼")) {
String [] parts = cmower.split("ï¼");
System.out.println("第ä¸é¨åï¼" + parts[0] +" 第äºé¨åï¼" + parts[1]);
} else {
throw new IllegalArgumentException("å½åå符串没æå
å«éå·");
}
}
}âä¸å¦¹ä½ çï¼è¿æ®µä»£ç æºä¸¥è°¨çå§ï¼âæè¯´ï¼âæ¥çä¸ä¸ç¨åºçè¾åºç»æãâ
第ä¸é¨åï¼æ²é»çäº ç¬¬äºé¨åï¼ä¸ææè¶£çç¨åºåâçç¡®å颿å®å ¨ä¸è´ãâä¸å¦¹è¯´ã
âè¿æ¯å»ºç«å¨å符串æ¯ç¡®å®çæ åµä¸ï¼æéè¦çæ¯åé符æ¯ç¡®å®çãå¦åï¼éº»ç¦å°±æ¥äºãâæè¯´ï¼â大约æ 12 ç§è±æç¹æ®ç¬¦å·ï¼å¦æç´æ¥æ¿è¿äºç¹æ®ç¬¦å·æ¿æ¢ä¸é¢ä»£ç ä¸çåé符ï¼ä¸æéå·ï¼ï¼è¿æ®µç¨åºå¨è¿è¡çæ¶åå°±ä¼åºç°ä»¥ä¸æå°çé误ãâ
- åææ
\ï¼ArrayIndexOutOfBoundsExceptionï¼ - æå
¥ç¬¦å·
^ï¼åä¸ï¼ - ç¾å
符å·
$ï¼åä¸ï¼ - éç¹
.ï¼åä¸ï¼ - ç«çº¿
|ï¼æ£å¸¸ï¼æ²¡æåºéï¼ - é®å·
?ï¼PatternSyntaxExceptionï¼ - æå·
*ï¼åä¸ï¼ - å å·
+ï¼åä¸ï¼ - 左尿¬å·æè
å³å°æ¬å·
()ï¼åä¸ï¼ - å·¦æ¹æ¬å·æè
峿¹æ¬å·
[]ï¼åä¸ï¼ - 左大æ¬å·æè
å³å¤§æ¬å·
{}ï¼åä¸ï¼
âé£éå°è¿äºç¹æ®ç¬¦å·è¯¥æä¹åå¢ï¼âä¸å¦¹é®ã
âç¨æ£å表达å¼ãâæè¯´ï¼âæ£åè¡¨è¾¾å¼æ¯ä¸ç»ç±åæ¯å符å·ç»æçç¹æ®ææ¬ï¼å®å¯ä»¥ç¨æ¥ä»ææ¬ä¸æ¾åºæ»¡è¶³ä½ æ³è¦çæ ¼å¼çå¥åãâ
æå¨ GitHub 䏿¾æäºä¸ä¸ªå¼æºçæ£å表达å¼å¦ä¹ ææ¡£ï¼é常详ç»ãä¸å¼å§åæ£å表达å¼çæ¶åé¾å 伿è§å°é常ççï¼ä½ å¯ä»¥æ¥çä¸ä¸è¿ä»½ææ¡£ãè®°ä¸ä½æ²¡å ³ç³»ï¼éå°å°±æ¥ã
é¤äºè¿ä»½ææ¡£ï¼è¿æä¸ä»½ï¼
ä½è æ¶éäºä¸äºå¨å¹³æ¶é¡¹ç®å¼åä¸ç»å¸¸ç¨å°çæ£å表达å¼ï¼å¯ä»¥ç´æ¥æ¿æ¥ç¨ã
âå¥ï¼ä½ çå¨å°ãâä¸å¦¹ç¬ç说ã
â好äºï¼æ¥ç¨è±æéç¹ . æ¿æ¢ä¸ä¸åé符ãâæè¯´ã
String cmower = "æ²é»çäº.䏿æè¶£çç¨åºå";
if (cmower.contains(".")) {
String [] parts = cmower.split("\\.");
System.out.println("第ä¸é¨åï¼" + parts[0] +" 第äºé¨åï¼" + parts[1]);
}ç±äºè±æéç¹å±äºç¹æ®ç¬¦å·ï¼æä»¥å¨ä½¿ç¨ split() æ¹æ³çæ¶åï¼å°±éè¦ä½¿ç¨æ£åè¡¨è¾¾å¼ \\. èä¸è½ç´æ¥ä½¿ç¨ .ã
â为ä»ä¹ç¨ä¸¤ä¸ªåææ å¢ï¼âä¸å¦¹é®ã
âå ä¸ºåææ æ¬èº«å°±æ¯ä¸ä¸ªç¹æ®å符ï¼éè¦ç¨åææ æ¥è½¬ä¹ãâæè¯´ã
å½ç¶äºï¼ä½ ä¹å¯ä»¥ä½¿ç¨ [] æ¥å
裹ä½è±æéç¹â.âï¼[] 乿¯ä¸ä¸ªæ£å表达å¼ï¼ç¨æ¥å¹é
æ¹æ¬å·ä¸å
å«çä»»æå符ã
cmower.split("[.]");餿¤ä¹å¤ï¼ è¿å¯ä»¥ä½¿ç¨ Pattern ç±»ç quote() æ¹æ³æ¥å
è£¹è±æéç¹â.âï¼è¯¥æ¹æ³ä¼è¿åä¸ä¸ªä½¿ç¨ \Q\E å
裹çå符串ã

æ¥ç示ä¾ï¼
String [] parts = cmower.split(Pattern.quote("."));å½ split() æ¹æ³çåæ°æ¯æ£å表达å¼çæ¶åï¼æ¹æ³æç»ä¼æ§è¡ä¸é¢è¿è¡ä»£ç ï¼
return Pattern.compile(regex).split(this, limit);ä¹å°±æå³çï¼æåå符串æäºæ°çéæ©ï¼å¯ä»¥ä¸ä½¿ç¨ String ç±»ç split() æ¹æ³ï¼ç´æ¥ç¨ä¸é¢çæ¹å¼ã
public class TestPatternSplit {
private static Pattern twopart = Pattern.compile("\\.");
public static void main(String[] args) {
String [] parts = twopart.split("æ²é»çäº.䏿æè¶£çç¨åºå");
System.out.println("第ä¸é¨åï¼" + parts[0] +" 第äºé¨åï¼" + parts[1]);
}
}â为ä»ä¹è¦æ Pattern 表达å¼å£°æç§° static çå¢ï¼âä¸å¦¹é®ã
âç±äºæ¨¡å¼æ¯ç¡®å®çï¼éè¿ static çé¢ç¼è¯åè½å¯ä»¥æé«ç¨åºçæçãâæè¯´ï¼â餿¤ä¹å¤ï¼è¿å¯ä»¥ä½¿ç¨ Pattern é å Matcher ç±»è¿è¡å符串æåï¼è¿æ ·åç好夿¯å¯ä»¥å¯¹è¦æåçå符串è¿è¡ä¸äºä¸¥æ ¼çéå¶ï¼æ¥çè¿æ®µç¤ºä¾ä»£ç ãâ
public class TestPatternMatch {
/**
* 使ç¨é¢ç¼è¯åè½ï¼æé«æç
*/
private static Pattern twopart = Pattern.compile("(.+)\\.(.+)");
public static void main(String[] args) {
checkString("æ²é»çäº.䏿æè¶£çç¨åºå");
checkString("æ²é»çäº.");
checkString(".䏿æè¶£çç¨åºå");
}
private static void checkString(String str) {
Matcher m = twopart.matcher(str);
if (m.matches()) {
System.out.println("第ä¸é¨åï¼" + m.group(1) + " 第äºé¨åï¼" + m.group(2));
} else {
System.out.println("ä¸å¹é
");
}
}
}æ£åè¡¨è¾¾å¼ (.+)\\.(.+) çæææ¯ï¼ä¸ä»
è¦æå符串æç
§è±ææ ç¹çæ¹å¼ææä¸¤é¨åï¼å¹¶ä¸è±æéç¹çååè¦æå
容ã
æ¥çä¸ä¸ç¨åºçè¾åºç»æï¼
第ä¸é¨åï¼æ²é»çäº ç¬¬äºé¨åï¼ä¸ææè¶£çç¨åºå
ä¸å¹é
ä¸å¹é
ä¸è¿ï¼ä½¿ç¨ Matcher æ¥å¹é
ä¸äºç®åçå符串æ¶ç¸å¯¹æ¯è¾æ²éä¸äºï¼ä½¿ç¨ String ç±»ç split() ä»ç¶æ¯é¦éï¼å ä¸ºè¯¥æ¹æ³è¿æå
¶ä»ä¸äºçé¼çåè½ãæ¯å¦è¯´ï¼å¦æä½ æ³æåé符å
è£¹å¨æååçå符串ç第ä¸é¨åï¼å¯ä»¥è¿æ ·åï¼
String cmower = "æ²é»çäºï¼ä¸ææè¶£çç¨åºå";
if (cmower.contains("ï¼")) {
String [] parts = cmower.split("(?<=ï¼)");
System.out.println("第ä¸é¨åï¼" + parts[0] +" 第äºé¨åï¼" + parts[1]);
}ç¨åºè¾åºçç»æå¦ä¸æç¤ºï¼
第ä¸é¨åï¼æ²é»çäºï¼ 第äºé¨åï¼ä¸ææè¶£çç¨åºåå¯ä»¥çå°åé符âï¼âå 裹å¨äºç¬¬ä¸é¨åï¼å¦æå¸æå 裹å¨ç¬¬äºé¨åï¼å¯ä»¥è¿æ ·åï¼
String [] parts = cmower.split("(?=ï¼)");â?<= å ?= æ¯ä»ä¹ä¸ä¸åï¼âä¸å¦¹å¥½å¥å°é®ã
âå®å ¶å®æ¯æ£å表达å¼ä¸çæè¨æ¨¡å¼ãâæè¯´ï¼âä½ ææ¶é´çè¯ï¼å¯ä»¥ççå颿æ¨èç䏤份弿ºææ¡£ãâ

âsplit() æ¹æ³å¯ä»¥ä¼ é 2 ä¸ªåæ°ï¼ç¬¬ä¸ä¸ªä¸ºåé符ï¼ç¬¬äºä¸ªä¸ºæåçå符串个æ°ãâæè¯´ã
String cmower = "æ²é»çäºï¼ä¸ææè¶£çç¨åºåï¼å® ç±ä»";
if (cmower.contains("ï¼")) {
String [] parts = cmower.split("ï¼", 2);
System.out.println("第ä¸é¨åï¼" + parts[0] +" 第äºé¨åï¼" + parts[1]);
}è¿å ¥ debug 模å¼çè¯ï¼å¯ä»¥çå°ä»¥ä¸å 容ï¼

ä¹å°±æ¯è¯´ï¼ä¼ é 2 ä¸ªåæ°çæ¶åï¼ä¼ç´æ¥è°ç¨ substring() è¿è¡æªåï¼ç¬¬äºä¸ªåé符åçå°±ä¸åæåäºã
æ¥çä¸ä¸ç¨åºè¾åºçç»æï¼
第ä¸é¨åï¼æ²é»çäº ç¬¬äºé¨åï¼ä¸ææè¶£çç¨åºåï¼å® ç±ä»â没æ³å°åï¼è¿ä¸ªå符串æåè¿æºè®²ç©¶çåï¼âä¸å¦¹ææ ¨å°è¯´ã
âæ¯çï¼å ¶å®å符串æåå¨å®é çå·¥ä½å½ä¸è¿æ¯æºç»å¸¸ç¨çãå端ç»å¸¸ä¼æç §è§åä¼ éä¸é¿ä¸²å符åºåå°å端ï¼å端就éè¦æç §è§åæå符串æåååå¤çãâæè¯´ã
âå¯ï¼ææä»å¤©çå å®¹æ¸©ä¹ ä¸ï¼äºå¥ï¼ä½ 伿¯ä¼ãâä¸å¦¹è¯´ã
GitHub 䏿 æ 10000+ ç弿ºç¥è¯åºãäºå¥ç Java è¿é¶ä¹è·¯ã第ä¸ç PDF ç»äºæ¥äºï¼å æ¬Javaåºç¡è¯æ³ãæ°ç»&å符串ãOOPãéåæ¡æ¶ãJava IOãå¼å¸¸å¤çãJava æ°ç¹æ§ãç½ç»ç¼ç¨ãNIOãå¹¶åç¼ç¨ãJVMççï¼å ±è®¡ 32 ä¸ä½åï¼500+å¼ æç»å¾ï¼å¯ä»¥è¯´æ¯éä¿ææãé£è¶£å¹½é»â¦â¦è¯¦æ æ³ï¼å¤ªèµäºï¼GitHub 䏿 æ 10000+ ç Java æç¨
å¾®ä¿¡æ æ²é»çäº ææ«æä¸æ¹äºç»´ç å ³æ³¨äºå¥çååå ¬ä¼å·æ²é»çäºï¼åå¤ 222 å³å¯å è´¹é¢åã

