char c = string.charAt(0);
isDigit =(c >='0'&& c <='9');
Или более медленные решения регулярных выражений:
s.substring(0,1).matches("\\d")// or the equivalent
s.substring(0,1).matches("[0-9]")
Однако при использовании любого из этих методов вы должны сначала убедиться, что строка не пуста. Если это так, charAt(0)и substring(0, 1)выкинет StringIndexOutOfBoundsException. startsWithнет этой проблемы.
Чтобы сделать все условие одной строкой и избежать проверки длины, вы можете изменить регулярные выражения на следующее:
s.matches("\\d.*")// or the equivalent
s.matches("[0-9].*")
Если условие не появляется в замкнутом цикле в вашей программе, небольшое снижение производительности при использовании регулярных выражений вряд ли будет заметным.
Re: «вы должны сначала убедиться, что строка не пуста» - истина и более того - вы также должны убедиться, что она не равна нулю, как если бы все отображаемые методы генерировали исключения. Вы можете либо напрямую проверить (например ((null!=s) && Character.isDigit(s.charAt(0)) )), либо использовать такие уловки, какCharacter.isDigit((s?s:"X").charAt(0))
epeleg
8
Регулярные выражения - очень сильный, но дорогой инструмент. Их можно использовать для проверки, является ли первый символ цифрой, но это не так изящно :) Я предпочитаю такой способ:
publicboolean isLeadingDigit(finalString value){finalchar c = value.charAt(0);return(c >='0'&& c <='9');}
1) functionне является Java. 2) Это позволяет использовать только арабские цифры, а не китайские, индийские и т. Д. Это может быть то, что вы предпочитаете, но это не указано в вопросе. 3) Я уже рассмотрел это точное решение в своем ответе четыре года назад.
Майкл Майерс
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");}
{1,1}Суффикс не нужен , что означает, что «предыдущий шаблон должен встречаться от 1 до 1 раз». Это означает то же самое, что и шаблон.
Анджей Дойл
Это решение не работает, так как String.matches и Pattern API пытается сопоставить полную строку, а не только первый символ
Амриш Пандей
0
Я только что натолкнулся на этот вопрос и подумал о том, чтобы внести свой вклад в решение, которое не использует регулярное выражение.
В моем случае я использую вспомогательный метод:
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;}
Наверное, излишество, но я стараюсь избегать регулярных выражений, когда могу.
Ответы:
Обратите внимание, что это позволит использовать любую цифру Unicode , а не только 0-9. Вы можете предпочесть:
Или более медленные решения регулярных выражений:
Однако при использовании любого из этих методов вы должны сначала убедиться, что строка не пуста. Если это так,
charAt(0)
иsubstring(0, 1)
выкинетStringIndexOutOfBoundsException
.startsWith
нет этой проблемы.Чтобы сделать все условие одной строкой и избежать проверки длины, вы можете изменить регулярные выражения на следующее:
Если условие не появляется в замкнутом цикле в вашей программе, небольшое снижение производительности при использовании регулярных выражений вряд ли будет заметным.
источник
((null!=s) && Character.isDigit(s.charAt(0)) )
), либо использовать такие уловки, какCharacter.isDigit((s?s:"X").charAt(0))
Регулярные выражения - очень сильный, но дорогой инструмент. Их можно использовать для проверки, является ли первый символ цифрой, но это не так изящно :) Я предпочитаю такой способ:
источник
function
не является Java. 2) Это позволяет использовать только арабские цифры, а не китайские, индийские и т. Д. Это может быть то, что вы предпочитаете, но это не указано в вопросе. 3) Я уже рассмотрел это точное решение в своем ответе четыре года назад.источник
{1,1}
Суффикс не нужен , что означает, что «предыдущий шаблон должен встречаться от 1 до 1 раз». Это означает то же самое, что и шаблон.Я только что натолкнулся на этот вопрос и подумал о том, чтобы внести свой вклад в решение, которое не использует регулярное выражение.
В моем случае я использую вспомогательный метод:
Наверное, излишество, но я стараюсь избегать регулярных выражений, когда могу.
источник