| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 605 人关注过本帖
标题:关于字符串有关方法的灵活使用--排除漏洞------------>大家请进
只看楼主 加入收藏
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
结帖率:96.43%
收藏
已结贴  问题点数:20 回复次数:8 
关于字符串有关方法的灵活使用--排除漏洞------------>大家请进
//现在的情况是我输入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("作业提交失败!!!");
        }
    }

}
搜索更多相关主题的帖子: 灵活使用 排除漏洞 字符串有关方法 
2009-08-08 17:05
pywepe
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:296
专家分:483
注 册:2009-4-5
收藏
得分:0 
回复 楼主 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个或多个 然后一个"@" 再一个.(/.转义成.)

java群
62635216
欢迎加入
2009-08-08 20:09
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:0 
Sorry   没懂意思

C#超级群 74862681,欢迎大家的到来!
2009-08-08 22:25
封闭
Rank: 9Rank: 9Rank: 9
来 自:广东省汕头市
等 级:蜘蛛侠
威 望:1
帖 子:501
专家分:1084
注 册:2007-9-14
收藏
得分:0 
LZ的意思是不是当你输入不正确的E-MAIL也算对??
其实设计这个程序时,没有对它有太多的约束,比如没有去验证后面的几位是否是.com
LZ如果想完善一点的话就自己加个约束进去就可以了。
2009-08-08 22:36
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:0 
通过什么约束语句来实现
   辛苦改动下吗?麻烦了。

C#超级群 74862681,欢迎大家的到来!
2009-08-08 23:37
usbboy2009
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:183
注 册:2009-7-31
收藏
得分:0 
回复 5楼 gameohyes
使用正则表达式,不要自己写底层代码去判断了,那是浪费脑细胞
   伪代码:
   String regex=".*\\.java";       \\java文件的正则表达式
   if(filename.matches(regex))  { 是java文件 }
   else{ 不是java文件 }

[ 本帖最后由 usbboy2009 于 2009-8-9 10:57 编辑 ]
2009-08-09 10:40
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:0 
回复 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="*\\@*\\@*\\@*\\@vip.*\\@*\\@ +
                "||*\\@*\\@*\\@*\\@*\\@*\\@
                "||*\\@ ;
        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("作业提交失败!!!");
        }
    }
 
}

C#超级群 74862681,欢迎大家的到来!
2009-08-09 11:53
usbboy2009
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:183
注 册:2009-7-31
收藏
得分:20 
回复 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=".+\\@\\@\\@\\@vip.\\@\\@ +  
                "||.+\\@\\@\\@\\@\\@\\@  
                "||.+\\@ ;
  
        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("作业提交失败!!!");  
        }  
    }  
 
}
收到的鲜花
  • gameohyes2009-08-09 23:55 送鲜花  5朵   附言:热情 论坛有你更精彩
2009-08-09 14:40
gameohyes
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:53
帖 子:1275
专家分:3629
注 册:2009-3-5
收藏
得分:0 
回复 8楼 usbboy2009

测试成功,感谢。辛苦了

C#超级群 74862681,欢迎大家的到来!
2009-08-09 23:52
快速回复:关于字符串有关方法的灵活使用--排除漏洞------------>大家请进
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017520 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved