我开发了一个拒绝以 00 和 99 开头的数字的功能。
public Boolean valideCode(EditText code_postal){
String number = code_postal.getText().toString();
if (number.charAt(0)==00){
}
return false;
}
我怎样才能正确地实现这个功能。
使用.startsWith()
:
if (number.startsWith("00") || number.startsWith("99")) ...
.charAt()
返回单个字符,而不是字符串。
(出于纯粹的好奇,为什么会这样?code_postal.getText().toString();
从 的名称中.getText()
,您会发现它已经返回了一个String
......呸。)
编辑因此,根据需要,另一个版本通过首先转换为 int 进行检查...
final int begin = Integer.parseInt(number.subString(0, 2));
if (begin % 99 == 0) // can only be true if number is 0 or 99
// etc
if 语句将始终返回 false。
一种解决方案:
if (number.trim().startsWith("00") || number.trim().startsWith("99")){
System.out.println("not valid");
}
您可以使用String
类indexOf()方法:
if (number.indexOf("00")==0 || number.indexOf("99")==0)
已编辑:-正如我从您的问题主题行“检查前两位数字位于 00 && 99 之间”中所了解的那样,您需要这个。
public static boolean isValid(String name) {
boolean isValid = true;
if(name.length()>2){
name = name.substring(0, 2);
}
try {
int number = Integer.parseInt(name);
if(number>-1 || number<100){
isValid = false;
}
}
catch(Exception e){
isValid = false;
}
return isValid;
}
如果我理解你的问题,特别是标题“介于 00 && 99 之间”,你想要这个
try
{
String s = "45Abc";
Integer i = Integer.parseInt(s.substring(0,2));
if (i>00 && i<99)
System.out.println("True");
}catch (NumberFormatException e)
{
// TODO Auto-generated catch block
System.out.println("First two characters are not numbers");
}
使用您的逻辑如下所示
private boolean isValid(String str) {
if (str == null)
return false;
String tempStr = null;
try {
if (str.length() > 2) {
tempStr = str.substring(0, 2);
} else {
tempStr = str;
}
int number = Integer.parseInt(tempStr);
if (number >= 0 && number <= 99) {
return false; //in between 0 to 99
} else {
return true;
}
} catch (NumberFormatException e) {
}
return false;
}
检查输入的数字是否以“00”或“99”开头
public Boolean valideCode(EditText code_postal){
String number = code_postal.getText().toString();
if(number.startsWith("00") || number.startsWith("99")){
return true;
}
return false;
}
检查输入的数字是否在“00”和“99”之间
public Boolean valideCode(EditText code_postal){
String number = code_postal.getText().toString();
String firstTwoDigits = number.substring(0,2);
if (Integer.valueOf(firstTwoDigits )>=0 && Integer.valueOf(firstTwoDigits )<=99){
return true;
}
return false;
}
注意:您的问题和描述的标题不同。因此有两个答案。
只是为了与众不同(效率低下且难以理解):
return !number.matches("^\s?(00|99).+");