我正在处理的项目要求我检查输入字符串的第一个字符,以确定它是否为数字字符。我开发了以下代码:
public static boolean IsLeadingCharNumfName(String fName)
{
CharSequence[] numbs;
numbs = new CharSequence[10];
numbs[0] = "0";
numbs[1] = "1";
numbs[2] = "2";
numbs[3] = "3";
numbs[4] = "4";
numbs[5] = "5";
numbs[6] = "6";
numbs[7] = "7";
numbs[8] = "8";
numbs[9] = "9";
if(fName.substring(0,1).equals(numbs[0]))
{
return true;
}
if(fName.substring(0,1).equals(numbs[1]))
{
return true;
}
if(fName.substring(0,1).equals(numbs[2]))
{
return true;
}
if(fName.substring(0,1).equals(numbs[3]))
{
return true;
}
if(fName.substring(0,1).equals(numbs[4]))
{
return true;
}
if(fName.substring(0,1).equals(numbs[5]))
{
return true;
}
if(fName.substring(0,1).equals(numbs[6]))
{
return true;
}
if(fName.substring(0,1).equals(numbs[7]))
{
return true;
}
if(fName.substring(0,1).equals(numbs[8]))
{
return true;
}
if(fName.substring(0,1).equals(numbs[9]))
{
return true;
}
else
{
return false;
}
}我觉得这段代码可以被优化,以提高效率,但我不知道怎么做。我必须做同样的检查,以检查名称是否包含一个数字。
我正在寻找的,是一种方法,主要是降低代码占用,效率作为第二奖励。
发布于 2015-02-04 15:06:57
使用Java的内置函数来实现这样的功能。特别是Character.isDigit(char c)和String.charAt(int index)String.charAt(int index)。
您现在拥有的是一个糟糕的重新实现,它会让任何维护程序员“等等,什么?”
这听起来很刻薄,但想想它实际上是什么:
return Character.isDigit(myString.charAt(0));那一行就是你所需要的。
为了防止将来发生类似的事情,我建议谷歌一下你的问题("java字符串以数字开头“或"java字符串以数字开头”)。
你就会想到这个问题..。https://stackoverflow.com/questions/1107798/how-to-check-a-string-starts-with-numeric-number ..这也指向了Character.isDigit。一点点谷歌将在你的编程工作中发挥很大作用。
噢。好吧。
首先,将fName.substring(0,1)存储在临时变量中。不需要永远子串。然后,代替Character.isDigit..。
String allowedChars = "0123456789";
String firstChar = fName.substring(0,1);
return allowedChars.contains(firstChar);毕竟,String是CharSequence。您可以在java.lang.String文档。中看到这个
public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence瞧,String implements CharSequence。
您需要注意的一件事是,您的函数可以获得一个null字符串或一个空字符串。
您应该检查得到的字符串是空还是空:
if (fName == null || fName.length == 0){
return false;
}https://codereview.stackexchange.com/questions/79584
复制相似问题