char c = string.charAt(0);
isDigit =(c >='0'&& c <='9');
Atau solusi regex yang lebih lambat:
s.substring(0,1).matches("\\d")// or the equivalent
s.substring(0,1).matches("[0-9]")
Namun, dengan salah satu metode ini, Anda harus terlebih dahulu memastikan bahwa string tidak kosong. Jika ya, charAt(0)dan substring(0, 1)akan melempar StringIndexOutOfBoundsException. startsWithtidak punya masalah ini.
Untuk membuat seluruh ketentuan satu baris dan menghindari pemeriksaan panjang, Anda dapat mengubah ekspresi reguler sebagai berikut:
s.matches("\\d.*")// or the equivalent
s.matches("[0-9].*")
Jika kondisi tidak muncul dalam loop yang ketat dalam program Anda, performa kecil yang dicapai untuk menggunakan ekspresi reguler kemungkinan tidak akan terlihat.
Re: "Anda harus terlebih dahulu memastikan bahwa string tidak kosong" - benar dan lebih dari itu - Anda juga harus memastikan tidak null seolah-olah semua metode yang ditampilkan akan membuang pengecualian. Anda dapat langsung memeriksa (misalnya ((null!=s) && Character.isDigit(s.charAt(0)) )) atau menggunakan trik sepertiCharacter.isDigit((s?s:"X").charAt(0))
epeleg
8
Ekspresi reguler adalah alat yang sangat kuat tetapi mahal. Ini valid untuk digunakan untuk memeriksa apakah karakter pertama adalah digit tetapi tidak begitu elegan :) Saya lebih suka cara ini:
publicboolean isLeadingDigit(finalString value){finalchar c = value.charAt(0);return(c >='0'&& c <='9');}
1) functionbukan Java. 2) Ini hanya mengizinkan angka Arab, bukan Cina, India, dll. Itu mungkin yang Anda sukai, tetapi tidak ditentukan dalam pertanyaan. 3) Saya sudah membahas solusi tepat ini dalam jawaban saya empat tahun lalu.
Michael Myers
0
regular expression starts with number->'^[0-9]'Pattern pattern =Pattern.compile('^[0-9]');Matcher matcher = pattern.matcher(String);if(matcher.find()){System.out.println("true");}
Anda tidak memerlukan {1,1}sufiks, yang berarti "pola sebelumnya harus muncul antara 1 dan 1 kali". Ini berarti persis sama dengan pola itu sendiri.
Andrzej Doyle
Solusi ini tidak berfungsi karena String.matches dan Pattern API mencoba mencocokkan string lengkap dan bukan hanya karakter pertama
Amrish Pandey
0
Saya baru saja menemukan pertanyaan ini dan berpikir untuk berkontribusi dengan solusi yang tidak menggunakan regex.
Dalam kasus saya, saya menggunakan metode helper:
publicboolean notNumber(String input){boolean notNumber =false;try{// must not start with a number@SuppressWarnings("unused")double checker =Double.valueOf(input.substring(0,1));}catch(Exception e){
notNumber =true;}return notNumber;}
Mungkin berlebihan, tapi saya mencoba menghindari regex kapan pun saya bisa.
Jawaban:
Perhatikan bahwa ini akan mengizinkan digit Unicode apa pun , tidak hanya 0-9. Anda mungkin lebih suka:
Atau solusi regex yang lebih lambat:
Namun, dengan salah satu metode ini, Anda harus terlebih dahulu memastikan bahwa string tidak kosong. Jika ya,
charAt(0)
dansubstring(0, 1)
akan melemparStringIndexOutOfBoundsException
.startsWith
tidak punya masalah ini.Untuk membuat seluruh ketentuan satu baris dan menghindari pemeriksaan panjang, Anda dapat mengubah ekspresi reguler sebagai berikut:
Jika kondisi tidak muncul dalam loop yang ketat dalam program Anda, performa kecil yang dicapai untuk menggunakan ekspresi reguler kemungkinan tidak akan terlihat.
sumber
((null!=s) && Character.isDigit(s.charAt(0)) )
) atau menggunakan trik sepertiCharacter.isDigit((s?s:"X").charAt(0))
Ekspresi reguler adalah alat yang sangat kuat tetapi mahal. Ini valid untuk digunakan untuk memeriksa apakah karakter pertama adalah digit tetapi tidak begitu elegan :) Saya lebih suka cara ini:
sumber
function
bukan Java. 2) Ini hanya mengizinkan angka Arab, bukan Cina, India, dll. Itu mungkin yang Anda sukai, tetapi tidak ditentukan dalam pertanyaan. 3) Saya sudah membahas solusi tepat ini dalam jawaban saya empat tahun lalu.sumber
{1,1}
sufiks, yang berarti "pola sebelumnya harus muncul antara 1 dan 1 kali". Ini berarti persis sama dengan pola itu sendiri.Saya baru saja menemukan pertanyaan ini dan berpikir untuk berkontribusi dengan solusi yang tidak menggunakan regex.
Dalam kasus saya, saya menggunakan metode helper:
Mungkin berlebihan, tapi saya mencoba menghindari regex kapan pun saya bisa.
sumber