--- title: å¦ä½å¨Java䏿åå符串ï¼è¯¦è§£Stringç±»çsplit()æ¹æ³ shortTitle: å¦ä½æåå符串 category: - Javaæ ¸å¿ tag: - æ°ç»&å符串 description: å¨Javaç¼ç¨ä¸ï¼å符串å岿¯å¸¸è§çæä½ãæ¬æè¯¦ç»è®²è§£äºå¦ä½ä½¿ç¨Stringç±»ä¸çsplit()æ¹æ³æ¥åå²å符串ï¼ä»¥åå¦ä½å©ç¨æ£å表达å¼è¿è¡é«çº§åå²ãææ¡å符串å岿巧ï¼è®©ä½ å¨å¤çææ¬æ°æ®æ¶æ´å 髿åçµæ´»ã head: - - meta - name: keywords content: Java,å符串,String,å符串æå --- âå¥ï¼ææè§å符串æå没ä»ä¹å¯è®²çåï¼ç´æ¥ä¸ String ç±»ç `split()` æ¹æ³ä¸å°±å¯ä»¥äºï¼âä¸å¦¹æ¯«ä¸å®¢æ°å°è¯´ã âåå¦ä½ ççè¿ä¹è§å¾ï¼é£å¯è¦æ³¨æäºï¼äºæ è¿æ²¡è¿ä¹ç®åãâæå¾®ç¬ç说ã åå¦ç°å¨æè¿æ ·ä¸ä¸²å符åºåâæ²é»çäºï¼ä¸ææè¶£çç¨åºåâï¼éè¦æç §ä¸æéå·âï¼âè¿è¡æåï¼è¿æå³ç第ä¸ä¸²å符åºå为éå·åé¢çâæ²é»çäºâï¼ç¬¬äºä¸²å符åºå为éå·åé¢çâ䏿æè¶£çç¨åºåâã âè¿ä¸çäºæ²¡è¯´åï¼å¥ï¼âè¿æ²¡çæè¯´ï¼ä¸å¦¹å°±ææäºæã âå«çæ¥åï¼çå¥è¯´å®ãâæä¾ç¶ä¿æçå¾®ç¬ç»§ç»è¯´ï¼â卿åä¹åï¼è¦å è¿è¡æ£æ¥ï¼å¤æä¸ä¸è¿ä¸²å符æ¯å¦å å«éå·ï¼å¦ååºè¯¥æåºå¼å¸¸ãâ ```java 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 䏿¾æäºä¸ä¸ªå¼æºçæ£å表达å¼å¦ä¹ ææ¡£ï¼é常详ç»ãä¸å¼å§åæ£å表达å¼çæ¶åé¾å 伿è§å°é常ççï¼ä½ å¯ä»¥æ¥çä¸ä¸è¿ä»½ææ¡£ãè®°ä¸ä½æ²¡å ³ç³»ï¼éå°å°±æ¥ã >[https://github.com/cdoco/learn-regex-zh](https://github.com/cdoco/learn-regex-zh) é¤äºè¿ä»½ææ¡£ï¼è¿æä¸ä»½ï¼ >[https://github.com/cdoco/common-regex](https://github.com/cdoco/common-regex) ä½è æ¶éäºä¸äºå¨å¹³æ¶é¡¹ç®å¼åä¸ç»å¸¸ç¨å°çæ£å表达å¼ï¼å¯ä»¥ç´æ¥æ¿æ¥ç¨ã âå¥ï¼ä½ çå¨å°ãâä¸å¦¹ç¬ç说ã â好äºï¼æ¥ç¨è±æéç¹ `.` æ¿æ¢ä¸ä¸åé符ãâæè¯´ã ```java String cmower = "æ²é»çäº.䏿æè¶£çç¨åºå"; if (cmower.contains(".")) { String [] parts = cmower.split("\\."); System.out.println("第ä¸é¨åï¼" + parts[0] +" 第äºé¨åï¼" + parts[1]); } ``` ç±äºè±æéç¹å±äºç¹æ®ç¬¦å·ï¼æä»¥å¨ä½¿ç¨ `split()` æ¹æ³çæ¶åï¼å°±éè¦ä½¿ç¨æ£åè¡¨è¾¾å¼ `\\.` èä¸è½ç´æ¥ä½¿ç¨ `.`ã â为ä»ä¹ç¨ä¸¤ä¸ªåææ å¢ï¼âä¸å¦¹é®ã âå ä¸ºåææ æ¬èº«å°±æ¯ä¸ä¸ªç¹æ®å符ï¼éè¦ç¨åææ æ¥è½¬ä¹ãâæè¯´ã å½ç¶äºï¼ä½ ä¹å¯ä»¥ä½¿ç¨ `[]` æ¥å 裹ä½è±æéç¹â.âï¼`[]` 乿¯ä¸ä¸ªæ£å表达å¼ï¼ç¨æ¥å¹é æ¹æ¬å·ä¸å å«çä»»æå符ã ```java cmower.split("[.]"); ``` 餿¤ä¹å¤ï¼ è¿å¯ä»¥ä½¿ç¨ Pattern ç±»ç `quote()` æ¹æ³æ¥å è£¹è±æéç¹â.âï¼è¯¥æ¹æ³ä¼è¿åä¸ä¸ªä½¿ç¨ `\Q\E` å 裹çå符串ã  æ¥ç示ä¾ï¼ ```java String [] parts = cmower.split(Pattern.quote(".")); ``` å½ `split()` æ¹æ³çåæ°æ¯æ£å表达å¼çæ¶åï¼æ¹æ³æç»ä¼æ§è¡ä¸é¢è¿è¡ä»£ç ï¼ ```java return Pattern.compile(regex).split(this, limit); ``` ä¹å°±æå³çï¼æåå符串æäºæ°çéæ©ï¼å¯ä»¥ä¸ä½¿ç¨ String ç±»ç `split()` æ¹æ³ï¼ç´æ¥ç¨ä¸é¢çæ¹å¼ã ```java 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 ç±»è¿è¡å符串æåï¼è¿æ ·åç好夿¯å¯ä»¥å¯¹è¦æåçå符串è¿è¡ä¸äºä¸¥æ ¼çéå¶ï¼æ¥çè¿æ®µç¤ºä¾ä»£ç ãâ ```java 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("ä¸å¹é "); } } } ``` æ£åè¡¨è¾¾å¼ `(.+)\\.(.+)` çæææ¯ï¼ä¸ä» è¦æå符串æç §è±ææ ç¹çæ¹å¼ææä¸¤é¨åï¼å¹¶ä¸è±æéç¹çååè¦æå å®¹ã æ¥çä¸ä¸ç¨åºçè¾åºç»æï¼ ```java 第ä¸é¨åï¼æ²é»çäº ç¬¬äºé¨åï¼ä¸ææè¶£çç¨åºå ä¸å¹é ä¸å¹é ``` ä¸è¿ï¼ä½¿ç¨ Matcher æ¥å¹é ä¸äºç®åçå符串æ¶ç¸å¯¹æ¯è¾æ²éä¸äºï¼ä½¿ç¨ String ç±»ç `split()` ä»ç¶æ¯é¦éï¼å ä¸ºè¯¥æ¹æ³è¿æå ¶ä»ä¸äºçé¼çåè½ãæ¯å¦è¯´ï¼å¦æä½ æ³æåé符å è£¹å¨æååçå符串ç第ä¸é¨åï¼å¯ä»¥è¿æ ·åï¼ ```java String cmower = "æ²é»çäºï¼ä¸ææè¶£çç¨åºå"; if (cmower.contains("ï¼")) { String [] parts = cmower.split("(?