当前位置: 代码迷 >> Java相关 >> 关于字符串有关方法的灵活使用--排除漏洞------------>大家请进
  详细解决方案

关于字符串有关方法的灵活使用--排除漏洞------------>大家请进

热度:238   发布时间:2009-08-08 17:05:43.0
关于字符串有关方法的灵活使用--排除漏洞------------>大家请进
//现在的情况是我输入1@.    程序也算我输对了。想用关于字符串的有关方法解决此问题,不知有可能不。当然其它方法也是可以的。大家来出出主意吧。感谢。
import java.util.*;
public class Accp9_5 {
    public static void main(String[] args) {
         boolean fileCorrect=false;
        boolean emailCorrect=false;
        System.out.println("――欢迎进入作业提交系统―――");
        Scanner input=new Scanner(System.in);
        System.out.println("请输入JAVA文件名:    ");
        String filename=input.next();
        System.out.println("请输入你的邮箱 :    ");
        String email=input.next();
        int index=filename.lastIndexOf(".");
        if(index!=-1&&index!=0&&filename.substring(index+1,filename.length()).equals("java")){
            fileCorrect=true;
        }else{
            System.out.println("文件名无效!!!");
        }
        if(email.indexOf('@')!=-1&&email.indexOf('.')>email.indexOf('@')){
            emailCorrect=true;
        }
        else{
            System.out.println("E-mail无效!!!");
        }
        if(fileCorrect&&emailCorrect){
            System.out.println("作业提交成功!");
        }else{
            System.out.println("作业提交失败!!!");
        }
    }

}
搜索更多相关的解决方案: 灵活使用  排除漏洞  字符串有关方法  

----------------解决方案--------------------------------------------------------
回复 楼主 gameohyes
用正则表达式
   String有一个方法
public boolean matches(String regex)

    告知此字符串是否匹配给定的正则表达式。

    调用此方法的 str.matches(regex) 形式与以下表达式产生的结果完全相同:

        Pattern.matches(regex, str)

    参数:
        regex - 用来匹配此字符串的正则表达式
    返回:
        当且仅当此字符串匹配给定的正则表达式时,返回 true
    抛出:
        PatternSyntaxException - 如果正则表达式的语法无效
    从以下版本开始:
        1.4
    另请参见:
        Pattern

邮箱的的正则表达式可以简单表式为:"/w+@/w+/./w+"  ps:好像是这样 你也可以查下 /w+即字母或数字1个或多个 然后一个"@" 再一个.(/.转义成.)

----------------解决方案--------------------------------------------------------
Sorry   没懂意思
----------------解决方案--------------------------------------------------------
LZ的意思是不是当你输入不正确的E-MAIL也算对??
其实设计这个程序时,没有对它有太多的约束,比如没有去验证后面的几位是否是.com
LZ如果想完善一点的话就自己加个约束进去就可以了。
----------------解决方案--------------------------------------------------------
通过什么约束语句来实现
   辛苦改动下吗?麻烦了。
----------------解决方案--------------------------------------------------------
回复 5楼 gameohyes
使用正则表达式,不要自己写底层代码去判断了,那是浪费脑细胞
   伪代码:
   String regex=".*\\.java";       \\java文件的正则表达式
   if(filename.matches(regex))  { 是java文件 }
   else{ 不是java文件 }

[ 本帖最后由 usbboy2009 于 2009-8-9 10:57 编辑 ]
----------------解决方案--------------------------------------------------------
回复 6楼 usbboy2009
帮改下。感谢
package accp9;
import java.util.*;
public class Accp9_5 {
    public static void main(String[] args) {
         System.out.println("――欢迎进入作业提交系统―――");
        Scanner input=new Scanner(System.in);
        System.out.println("请输入JAVA文件名:    ");
        String filename=input.next();
        System.out.println("请输入你的邮箱 :    ");
        String email=input.next();
        String regex="*\\.java" ;      //java文件的正则表达式
        if(filename.matches(regex))  {   
            System.out.println("正确!!!");
        }else{ System.out.println("文件名无效! !!");}
         
        String regex1="*\\@163.com||*\\@126.com||*\\@qq.com||*\\@vip.qq.com||*\\@163.net||*\\@188.com" +
                "||*\\@sohu.com||*\\@tom.com||*\\@yahoo.com||*\\@yahoo.com.cn||*\\@sina.com||*\\@gmail.com"+
                "||*\\@hotmail.com" ;
        if(email.matches(regex1)){
            System.out.println("正确!!!");
        }
                  
        else{
            System.out.println("E-mail无效!!!");
        }
        if(filename.matches(regex)&&email.matches(regex1)){
            System.out.println("作业提交成功!");
        }else{
            System.out.println("作业提交失败!!!");
        }
    }

}
----------------解决方案--------------------------------------------------------
回复 7楼 gameohyes
我把regex和regex里的*都改成了+ 优化下判断,要不你输入没有名字的.java也算对
改后程序里“+”前面应该有个“.”注意
实际上你还可以优化判断表达式:比如email中不能用数字开头,用户名中不能使用特殊字符等

import java.util.*;  
public class Accp9_5 {  
    public static void main(String[] args) {  
         System.out.println("――欢迎进入作业提交系统―――");  
        Scanner input=new Scanner(System.in);  
        System.out.println("请输入JAVA文件名:    ");  
        String filename=input.next();  
        System.out.println("请输入你的邮箱 :    ");  
        String email=input.next();  
        String regex=".+\\.java" ;      //java文件的正则表达式  
        if(filename.matches(regex))  {   
            System.out.println("正确!!!");  
        }else{ System.out.println("文件名无效! !!");}  
         
        String regex1=".+\\@163.com||.+\\@126.com||.+\\@qq.com||.+\\@vip.qq.com||.+\\@163.net||.+\\@188.com" +  
                "||.+\\@sohu.com||.+\\@tom.com||.+\\@yahoo.com||.+\\@yahoo.com.cn||.+\\@sina.com||.+\\@gmail.com"+  
                "||.+\\@hotmail.com" ;
  
        if(email.matches(regex1)){  
            System.out.println("正确!!!");  
        }  
                  
        else{  
            System.out.println("E-mail无效!!!");  
        }  
        if(filename.matches(regex)&&email.matches(regex1)){  
            System.out.println("作业提交成功!");  
        }else{  
            System.out.println("作业提交失败!!!");  
        }  
    }  

}
本帖最近评分记录
  • gameohyes 积分 +5 热情 论坛有你更精彩 2009-8-9 23:55
2009-08-09 06:40:21
gameohyes

来 自:湖南
等 级:版主
威 望:53
帖 子:1276
专家分:3629
注 册:2009-3-5
  得分:0 
回复 8楼 usbboy2009

测试成功,感谢。辛苦了
----------------解决方案--------------------------------------------------------
  相关解决方案