เพียงแค่ให้สตริงที่มีตัวเลขเช่น:
String S = "EERT343DFG56756DTRY66FGGGG89DFGF";
แล้วเราจะแยกตัวเลขได้อย่างไร? มีวิธีการดังต่อไปนี้การแสดงออกปกติคลาสคอลเลกชันและวิธีการที่จัดทำโดยคลาสสตริง
1 วิธีที่จัดทำโดยคลาสสตริง:
แบบฝึกหัดการทดสอบแพ็คเกจ; นำเข้า java.util.*; คลาสสาธารณะ get_stringnum {/***2016.10.25*/โมฆะคงที่สาธารณะหลัก (สตริง [] args) {string str = "love23next234csdn3423javaeye"; str = str.trim () ! "". เท่ากับ (str)) {สำหรับ (int i = 0; i <str.length (); i ++) {ถ้า (str.charat (i)> = 48 && str.charat (i) <= 57) {str2+= str.charat (i);วิธีนี้มีข้อเสียที่ชัดเจนมันสามารถแยกตัวเลขทั้งหมดเข้าด้วยกัน แต่ไม่แยกกัน แน่นอนว่ามันสามารถปรับปรุงได้ เพื่อนที่สนใจสามารถลองได้
2 นิพจน์ทั่วไป
นำเข้า java.util.*; นำเข้า java.util.regex.matcher; นำเข้า java.util.regex.pattern; คลาสสาธารณะ get_stringnum {/***2016.10.25*/โมฆะคงที่สาธารณะ regex = "[^0-9]"; รูปแบบ p = pattern.compile (regex); matcher m = p.matcher (a); System.out.println (m.replaceall (""). trim ());}} เอาต์พุต: 232343423รูปแบบ, Matcher เป็นสองคลาสในแพ็คเกจซอฟต์แวร์ Java.util.regex คุณสามารถตรวจสอบ API สำหรับการใช้งานเฉพาะ นอกจากนี้ตัวเลขไม่สามารถสกัดเป็นรายบุคคลได้
3 ห้องสมุดคลาสคอลเลกชัน
นำเข้า java.util.*; นำเข้า java.util.regex.matcher; นำเข้า java.util.regex.pattern; คลาสสาธารณะ get_stringnum {/***2016.10.25*/โมฆะคงที่สาธารณะ ArrayList <String> (); รูปแบบ p = pattern.compile ("[^0-9]"); matcher m = p.matcher (a); string result = m.replaceall (""); สำหรับ (int i = 0; i <result.length (); i ++) i+1));} system.out.println (DigitList);}} เอาต์พุต: [2, 3, 2, 3, 4, 3, 4, 2, 3] แนวคิดเดียวกัน:
นำเข้า java.util.*; นำเข้า java.util.regex.matcher; นำเข้า java.util.regex.pattern; คลาสสาธารณะ get_stringnum {/***2016.10.25*/โมฆะคงที่สาธารณะ รายการ <String> ss = new ArrayList <String> (); สำหรับ (String SSS: S.replaceall ("[^0-9]", ","). แยก (",")) {ถ้า (sss.length ()> 0) ss.add (ss); } system.out.print (SS); }} เอาต์พุต: [2, 3, 2, 3, 4, 3, 4, 2, 3]เห็นได้ชัดว่าการใช้นิพจน์ทั่วไปเราสามารถแยกตัวเลขแยกกันได้
นอกจากนี้ยังมีคำตอบให้ค้นหาโดยค้นหาเอกสารดังต่อไปนี้:
/ ** *รับหมายเลขจากข้อความสตริง *@param text *@return */ รายการ publicstatic <long> getDigit (ข้อความสตริง) {รายการ <long> digitList = new ArrayList <long> (); รูปแบบ p = pattern.compile ("(// d+)"); Matcher M = P.Matcher (ข้อความ); ในขณะที่ (m.find ()) {string find = m.group (1) .toString (); DigitList.add (long.valueof (ค้นหา)); } ส่งคืน DigitList; -วิธีการตัดสินสองวิธีที่ตรงกับการใช้นิพจน์ทั่วไปมีดังนี้
// ตรวจสอบว่าสตริงทั้งหมดเป็นตัวเลขบูลีนสาธารณะ isdigit (String strnum) {return strnum.matches ("[0-9] {1,}"); } // พิจารณาว่าสตริงทั้งหมดเป็นตัวเลขบูลีนสาธารณะ isDigit (สตริง strnum) {รูปแบบรูปแบบ = pattern.compile ("[0-9] {1,}"); matcher matcher = pattern.matcher ((charsequence) strnum); return matcher.matches (); } // สกัดกั้นจำนวนสตริงสาธารณะ getNumbers (เนื้อหาสตริง) {รูปแบบรูปแบบ = pattern.compile ("// d+"); matcher matcher = pattern.matcher (เนื้อหา); ในขณะที่ (matcher.find ()) {return matcher.group (0); } กลับ ""; } // intercept non-number public String splitNumber (เนื้อหาสตริง) {รูปแบบรูปแบบ = pattern.compile ("// d+"); matcher matcher = pattern.matcher (เนื้อหา); ในขณะที่ (matcher.find ()) {return matcher.group (0); } กลับ ""; -ด้านบนเป็นเนื้อหาทั้งหมดของตัวอย่างง่ายๆของการแยกตัวเลข Java จากสตริงที่นำมาให้คุณโดยบรรณาธิการ ฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น ~