java 判断字符串首字母大写,非首字母小写代码,看看我的代码有没有问题?
publicclassTest2{publicbooleanisValiString2(Stringstr){if(str!=null&&!"".equals(str))...
public class Test2
{
public boolean isValiString2(String str)
{
if(str !=null && !"".equals(str))
{
//首字母大写的判断
for(char i='A';i<='Z';i++)
{
//如果首字母大写且只有一个大写字母,就通过
if(str.substring(0).length()==1 && str.charAt(0)==i)
{
return true;
}
if(str.substring(0).length()>1 && str.charAt(0)==i)//如果首字母大写且length>1继续执行下面的循环
{
break;
}
}
//System.out.println(str.charAt(1));
for(int j=1;j<str.length();j++)
{
//System.out.println(str.charAt(j));
if(str.charAt(j)>='a' && str.charAt(j)<='z')
{
System.out.println(str.charAt(j));
if(j==str.length()-1)//当结束时,结果成立,就返回true
{
return true;
}else{
continue;//否则,继续
}
}else
{
//return false;
break;//只要上面的if不成立,就跳出循环
}
}
}
return false;
}
public static void main(String[] args)
{
// System.out.println(new Test2().isValiString("A"));
System.out.println(new Test2().isValiString2("B"));
}
} 展开
{
public boolean isValiString2(String str)
{
if(str !=null && !"".equals(str))
{
//首字母大写的判断
for(char i='A';i<='Z';i++)
{
//如果首字母大写且只有一个大写字母,就通过
if(str.substring(0).length()==1 && str.charAt(0)==i)
{
return true;
}
if(str.substring(0).length()>1 && str.charAt(0)==i)//如果首字母大写且length>1继续执行下面的循环
{
break;
}
}
//System.out.println(str.charAt(1));
for(int j=1;j<str.length();j++)
{
//System.out.println(str.charAt(j));
if(str.charAt(j)>='a' && str.charAt(j)<='z')
{
System.out.println(str.charAt(j));
if(j==str.length()-1)//当结束时,结果成立,就返回true
{
return true;
}else{
continue;//否则,继续
}
}else
{
//return false;
break;//只要上面的if不成立,就跳出循环
}
}
}
return false;
}
public static void main(String[] args)
{
// System.out.println(new Test2().isValiString("A"));
System.out.println(new Test2().isValiString2("B"));
}
} 展开
展开全部
可以实现目标,不够算法有问题吧。太长了。
package baidu;
public class Test2 {
public boolean isValiString2(String str) {
if (str != null && !"".equals(str)) {
if ((str.charAt(0) + "").compareTo("A") > 0
&& (str.charAt(0) + "").compareTo("Z") < 0) {
if (str.substring(1, str.length()).equals(
str.substring(1, str.length()).toLowerCase())) {
return true;
}
}
}
return false;
}
public static void main(String[] args) {
// System.out.println(new Test2().isValiString("A"));
System.out.println(new Test2().isValiString2("Dca1sa"));
}
}
允许出现数字。
package baidu;
public class Test2 {
public boolean isValiString2(String str) {
if (str != null && !"".equals(str)) {
if ((str.charAt(0) + "").compareTo("A") > 0
&& (str.charAt(0) + "").compareTo("Z") < 0) {
if (str.substring(1, str.length()).equals(
str.substring(1, str.length()).toLowerCase())) {
return true;
}
}
}
return false;
}
public static void main(String[] args) {
// System.out.println(new Test2().isValiString("A"));
System.out.println(new Test2().isValiString2("Dca1sa"));
}
}
允许出现数字。
追问
你这个特殊字符也行呀,比如*,\。好像都返回true。
追答
那要过滤吗?
过滤的话加一个正则。其他不变。
public boolean isValiString2(String str) {
Pattern p=Pattern.compile("[^a-z]");
if (str != null && !"".equals(str)) {
if ((str.charAt(0) + "").compareTo("A") > 0
&& (str.charAt(0) + "").compareTo("Z") < 0) {
if(p.matcher(str.substring(1, str.length())).find()){
return false;
}
if (str.substring(1, str.length()).equals(
str.substring(1, str.length()).toLowerCase())) {
return true;
}
}
}
return false;
}
展开全部
逐个匹配不够效率。你明显已经知道可以通过i++去遍历A-Z,那么为什么不直接一次过写成
boolean result=('A'<new Integer(str.substring(0)))&&(new Integer(str.substring(0))>'Z')?true:false;
boolean result=('A'<new Integer(str.substring(0)))&&(new Integer(str.substring(0))>'Z')?true:false;
更多追问追答
追问
你这个str.substring(0),返回的可以使长度大于1的字符串吧,而且你这个算法不是太懂,我重来都没有用过new Integer();只用过常用的,比如:Integer.parseInt(str);能否在讲的清楚一点!
追答
new Integer(String)意思就是把一个类似'11'的数字字符串转为整形对象。。'A'这种纯字母字符都是对应一个整形值的。那么A-Z这些字母对应的整型值就是大于A小于Z。基于这个思想来进行判断。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-03-25
展开全部
你前面不是问了正则的么,用正则快多了
追问
正则的我是这样写的 String str = "^[A-Z]{1}[a-z]*$";
现在我想用纯java代码达到预期的效果,我觉得应该什么样的方法都应该尝试一遍,最后选择一个又安全,又容易理解的代码!只不过我觉得不管是什么方法都应该知道一些吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有问题啊,而且太麻烦了。一定要这样写?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询