У меня есть строка, которая содержит буквенно-цифровой символ.
Мне нужно проверить, запущена ли строка с номером.
Спасибо,
У меня есть строка, которая содержит буквенно-цифровой символ.
Мне нужно проверить, запущена ли строка с номером.
Спасибо,
См. метод isDigit(char ch)
:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Character.html
и передать его первому символу строки, используя метод String.charAt()
.
Character.isDigit(myString.charAt(0));
Извините, я не увидел ваш тег Java, читал только вопрос. Я все равно оставлю здесь свои ответы, так как я их напечатал.
Джава
String myString = "9Hello World!";
if ( Character.isDigit(myString.charAt(0)) )
{
System.out.println("String begins with a digit");
}
C++:
string myString = "2Hello World!";
if (isdigit( myString[0]) )
{
printf("String begins with a digit");
}
Регулярное выражение:
\b[0-9]
Некоторые доказательства того, что мое регулярное выражение работает: разве мои тестовые данные неверны?
Я думаю, вы должны использовать регулярное выражение:
import java.util.regex.*;
public class Test {
public static void main(String[] args) {
String neg = "-123abc";
String pos = "123abc";
String non = "abc123";
/* I'm not sure if this regex is too verbose, but it should be
* clear. It checks that the string starts with either a series
* of one or more digits... OR a negative sign followed by 1 or
* more digits. Anything can follow the digits. Update as you need
* for things that should not follow the digits or for floating
* point numbers.
*/
Pattern pattern = Pattern.compile("^(\\d+.*|-\\d+.*)");
Matcher matcher = pattern.matcher(neg);
if(matcher.matches()) {
System.out.println("matches negative number");
}
matcher = pattern.matcher(pos);
if (matcher.matches()) {
System.out.println("positive matches");
}
matcher = pattern.matcher(non);
if (!matcher.matches()) {
System.out.println("letters don't match :-)!!!");
}
}
}
Вы можете настроить это, чтобы принимать числа с плавающей запятой, но это будет работать для негативов. Другие ответы не будут работать на негативы, потому что они проверяют только первого персонажа! Будьте более конкретными в отношении ваших потребностей, и я могу помочь вам отрегулировать этот подход.
Это должно работать:
String s = "123foo";
Character.isDigit(s.charAt(0));
System.out.println(Character.isDigit(mystring.charAt(0));
EDIT: Я искал java-документы, просматривал методы в строчном классе, которые могут получить мне 1-й символ и посмотреть методы на классе символов, чтобы узнать, есть ли у него какой-либо метод для проверки такой вещи.
Я думаю, вы могли бы сделать то же самое, прежде чем спрашивать об этом.
EDI2: Я имею в виду, стараюсь делать что-то, читать/находить и если вы ничего не можете найти - спросите.
Я допустил ошибку при публикации ее в первый раз. isDigit - статический метод в классе символов.
Используйте регулярное выражение, например ^\d