Beri Anda string yang berisi angka, seperti:
String s = "eert343dfg56756dtry66fggg89dfgf";
Jadi bagaimana kita mengekstrak angkanya? Ada kira -kira metode berikut, ekspresi reguler, kelas koleksi, dan metode yang disediakan oleh kelas string.
1 Metode yang disediakan oleh String Class:
Latihan Tes Paket; Impor java.util.*; kelas publik get_stringnum {/***2016.10.25*/public static void main (string [] args) {string str = "love23next234csdn3423Javaeye"; str. str.trim (); string str2 = "" ""; i = 0; i <str.length (); i ++) {if (str.chargar (i)> = 48 && str.charat (i) <= 57) {str2+= str.charat (i);}}}} System.out.println (str2);} output: 23234323Metode ini memiliki kerugian yang jelas, ia hanya dapat mengekstraksi semua angka bersama -sama, tetapi tidak secara terpisah. Tentu saja, itu juga dapat ditingkatkan. Teman yang tertarik bisa mencobanya.
2 ekspresi reguler
impor java.util.*; impor java.util.regex.matcher; impor java.util.regex.pattern; kelas publik get_stringnum {/***2016.10.25*/public static void main (string [] args) {string a = "love23neNext23csdncncn344444444442 regex = "[^0-9]"; Pola p = pola.compile (regex); Pencocokan m = p.matcher (a); System.out.println (m.replaceall (""). Trim ());}} output: 232343423Pola, pencocokan adalah dua kelas dalam paket perangkat lunak java.util.regex. Anda dapat memeriksa API untuk penggunaan tertentu. Juga, angka tidak dapat diekstraksi secara individual.
3 Perpustakaan Kelas Koleksi
impor java.util.*; import java.util.regex.matcher; import java.util.regex.pattern; kelas publik get_stringnum {/***2016.10.25*/public static main (string [] args) {string a = "love23neNext23csdn. ArrayList <String> (); pola p = pola.compile ("[^0-9]"); pencocokan m = p.matcher (a); hasil string = m.replaceall (""); untuk (int i = 0; i <result.length (); i ++) {digitlist.add (result. i+1));} System.out.println (digitlist);}} output: [2, 3, 2, 3, 4, 3, 4, 2, 3] Ide yang sama:
Impor java.util.*; impor java.util.regex.matcher; impor java.util.regex.pattern; kelas publik get_stringnum {/***2016.10.25*/public static void main (string [] args) {string a = "love23neNExt23csdncncncn344444342; Daftar <String> ss = ArrayList baru <String> (); untuk (string sss: s.replaceall ("[^0-9]", ","). split (",")) {if (sss.length ()> 0) ss.add (ss); } System.out.print (SS); }} output: [2, 3, 2, 3, 4, 3, 4, 2, 3]Jelas bahwa menggunakan ekspresi reguler kita dapat mengekstrak angka secara terpisah.
Ada juga jawaban yang harus ditemukan dengan mencari dokumen, sebagai berikut:
/ ** *Dapatkan nomor dari Teks String *@Param Text *@return */ PublicStatic List <long> getDigit (Teks String) {Daftar <long> digitList = ArrayList baru <long> (); Pola p = pola.compile ("(// d+)"); Pencocokan m = p.matcher (teks); while (m.find ()) {string find = m.group (1) .toString (); digitlist.add (long.valueof (find)); } return digitlist; }Dua metode penilaian yang cocok menggunakan ekspresi reguler adalah sebagai berikut;
// Tentukan apakah semua string adalah angka public boolean isDigit (string strnum) {return strnum.matches ("[0-9] {1,}"); } // Tentukan apakah semua string adalah angka public boolean isDigit (string strnum) {pola pola = pola.compile ("[0-9] {1,}"); Pencocokan pencocokan = pola.matcher ((charsequence) strnum); return matcher.matches (); } // mencegat angka string publik getNumbers (konten string) {pola pola = pola.compile ("// d+"); Pencocokan pencocokan = pola.matcher (konten); while (matcher.find ()) {return matcher.group (0); } kembali ""; } // mencegat string publik non-number splitNotNumber (konten string) {pola pola = pola.compile ("// d+"); Pencocokan pencocokan = pola.matcher (konten); while (matcher.find ()) {return matcher.group (0); } kembali ""; }Di atas adalah seluruh konten dari contoh sederhana Java mengekstraksi angka dari string yang dibawa oleh editor. Saya harap semua orang dapat mendukung wulin.com lebih banyak ~