精华内容
下载资源
问答
  • 分别编写名字为TestPackageCalss和MyException类,实现一下功能:在控制台串中输入一串字符,并判断,如果是整数字符串,则转换成Ingeger对象,如果是浮点数字符串则转换成Double对象,并格式化为 $#....#.##(不用...

    题目

    分别编写名字为TestPackageCalss和MyException类,实现一下功能:在控制台串中输入一串字符,并判断,如果是整数字符串,则转换成Ingeger对象,如果是浮点数字符串则转换成Double对象,并格式化为 $#....#.##(不用四舍五入输出进度到小数点后面两位),如果是非数字,则抛出显式抛出自定义异常类MyException,异常信息是“输入了数据无法实现数字格式转换"。

    (作业题,描述不太严谨,按照大概意思来即可)

    说明

    这个作业题不是重点,本博客重点是:以该题目为切入点,如何去写校验【正整数】和【浮点数】格式的正则表达式。正则表达式一般去网上找就行了,但掌握正则表达式的基础知识并会写简单的正则表达式也比较重要。

    分析

    1.整数

    问:如何理解正确的整数格式?

    举例:0,-1235,102340。。。这个不好说,只能靠意会

    问:什么是正确的整数格式?

    举例:000,-0,+0,03524。。。显然一般来说,正确的整数格式是:不会有前导0的

     

    先来看看网上找到的一个校验整数的正则表达式

    String regex="^-?\\d+$";

    还算比较简单吧。很容易看出来,这个正则表达式会错判有前导0的情况,会认为000,-0,+0,03524...这些是正确。

    仅仅从作业题来看,Java种的 Integer.valueOf(str) 的 str 是允许前导0的,str 有前导0,该函数也能成功转换,并不会抛出异常。那么如果只是为了做这个作业题,这个正则表达式够用了。

    假设OJ上有这么一题:

    题目

          请编写程序,判断给出的字符串是否符合正确的整数格式。

          正确的整数格式:0,-1235,102340。。。

          不正确的整数格式:000,-0,+0,03524。。

    输入格式

          每一行输入一个字符串,输入若干行。

    输出格式

          符合格式输出“yes”,否则输出“no”。

    C/C++肯定是可以做的,但不好做。对于学习C/C++的同学来说,这是一道不错的考察字符串的题目。

     

    铺垫了这么多。进入正题。

    正确的整数格式分两种情况来考虑

    (1)0。为什么0如此特殊以至于单独作为一种情况?因为防止这样的数据:-0,000,00。。。

    (2)非0。有没有负号都是可以的,但第一位数字必定是[1-9],因为不能有前导0!随后的数位可以是[0-9]。

    总结出规律,那么这个正则表达式就非常简单了

    String regex="(-?[1-9]\\d*)|0";

     

    2.浮点数

    显然校验浮点数比校验整数复杂得多。考虑的情况很多,可能会有点乱。所以思考的时候注重角度。

     

    明确一点:小数点只是正确的浮点数的格式的一个显著特征,一个符合正确格式的浮点数不一定要有小数点

    例如:1.0符合浮点数的格式,1也认为是正确的浮点数格式。

     可以这样认为:符合整数格式的字符串都符合浮点数格式。

     

    正确的浮点数格式,分两个角度来考虑

    (1)整数部分

    浮点数的整数部分的校验能否直接搬上面校验整数的正则表达式?

    不可以!为什么?

    举例:-0.68是正确的浮点数格式,但如果搬上面的正则表达式校验其整数部分,-0.68会被认为有前导0而被错判!

    整数部分的正则表达式:-?(0|[1-9]\\d*)

    注意对比以下校验正整数的正则表达式,体会以下有什么不同?对比以下,可以看出0放在括号里面了,就是为了考虑到-0.68这种情况。

    (2)小数部分

    小数部分就非常简单了:(\\.\\d+)?

    只要有小数点,后面必须有至少一位数字[0-9]。前面也说了,由于小数部分不是必须的,所以括起来然后加了个?

    另外注意:由于“.”有特殊含义,在正则表达式表示:除了换行符以外的任意一个字符。故需要转义。

    可以这样理解 “\\.”:① “\\” 转义成 “\ ”;② “\.” 转义成 “.”

     

    合起来得到

    String regex="-?(0|[1-9]\\d*)(\\.\\d+)?";

    但是

    这个正则表达式仍会错判一个特殊情况:-0。 但它不会错判-00,-000。。。

    想想为什么?

    假如有小数部分,整数部分是可以允许是-0的。假如没有小数部分,整数部分不能是-0!正则表达式在校验整数部分时,还不知道后面有没有小数部分。

    如何规避这种情况?

    重新分类,重写正则表达式?

    没必要。

    若想在正则表达式中规避-0的情况,就要另外分类,将-0的情况单独分处理,但如果这样去干正则表达式就会变得冗长,
            且分类多了就容易重叠混乱,造成越想追求完美结果就越多bug的得不偿失。既然只有这一种特例,如果需要,在正则
            表达式外面特判即可。

    代码

    下面给出这个作业题的完整代码。

    package theme4;
    
    import java.text.DecimalFormat;
    import java.util.Scanner;
    
    /**
     * 分别编写名字为TestPackageCalss和MyException类,实现一下功能:在控制台串中输入一串字符,并判断,
     * 如果是整数字符串,则转换成Ingeger对象,如果是浮点数字符串则转换成Double对象,并格式化为 $#....#.##
     * (不用四舍五入输出进度到小数点后面两位,),如果是非数字,则抛出显式抛出自定义异常类MyException,
     * 异常信息是“输入了数据无法实现数字格式转换";
     */
    public class TestPackageCalss {
    	
    	public static void main(String[] args) {
    		//System.out.println(isDoubleFormat("-00"));
    		testInteger();
    		testDouble();
    	}
    	
    	public static void testInteger()
    	{
    		System.out.println("请输入一个符合正确格式的整数字符串:");
    		Scanner sc=new Scanner(System.in);
    		String num=sc.nextLine();
    		
    		try {
    			Integer intObj=strToInteger(num);
    			System.out.println("成功将字符串转成Integer对象");
    			System.out.println(intObj);
    		} catch (MyException e) {
    			System.out.println(e.getMessage());
    		} finally {
    			sc.close();
    		}
    	}
    	
    	public static void testDouble()
    	{
    		System.out.println("请输入一个符合正确格式的浮点数字符串:");
    		Scanner sc=new Scanner(System.in);
    		String num=sc.nextLine();
    		
    		try {
    			Double doubleObj=strToDouble(num);
    			String pattern="#.00";
    			DecimalFormat myFormat=new DecimalFormat(pattern);
    			System.out.println(myFormat.format(doubleObj));
    		} catch (MyException e) {
    			System.out.println(e.getMessage());
    		} finally {
    			sc.close();
    		}
    	}
    	
    	public static Integer strToInteger(String num) throws MyException
    	{
    		if(isIntegerFormat(num))
    			return Integer.valueOf(num);
    		else
    			throw new MyException("字符串格式异常");
    	}
    	
    	public static Double strToDouble(String num) throws MyException
    	{
    		if(isDoubleFormat(num))
    			return Double.valueOf(num);
    		else
    			throw new MyException("字符串格式异常");
    	}
    	
    	public static boolean isIntegerFormat(String num)
    	{
    		
    		String regex="(-?[1-9]\\d*)|0"; 
    		return num.matches(regex);
    	}
    	
    	public static boolean isDoubleFormat(String num)
    	{
    		String regex="-?(0|[1-9]\\d*)(\\.\\d+)?";
    		if(num.equals("-0"))
    			return false;
    		return num.matches(regex);
    	}
    	
    	
    }
    

     

    package theme4;
    
    /**
     * 自定义异常类
     * @author passerbyYSQ
     *
     */
    public class MyException extends Exception {
    	
    	static final long serialVersionUID = -33875169934229948L;
    	
    	public MyException()
    	{
    		
    	}
    	
    	public MyException(String msg)
    	{
    		super(msg);
    	}
    	
    }
    

    备注

    自己写的正则表达式,没有严格测试过。如有错误,轻喷。。

    展开全文
  • 检查xml格式是否正确的方法

    千次阅读 2013-01-18 13:51:05
    以树状结构展示出来,你就可看到相应借点之间的关系是否正确,是否在正确的位置。 就可以看出xml的问题所在了。 例如下面的的hibernate实体类文件User.hbm.xml ------------------------------------------------...

    将xml文件用浏览器打开,浏览器如果识别出是xml就可以运行。

    以树状结构展示出来,你就可看到相应借点之间的关系是否正确,是否在正确的位置。

    就可以看出xml的问题所在了。

    例如下面的的hibernate实体类文件User.hbm.xml

    ------------------------------------------------------

    <?xml version="1.0" encoding="gb18030"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <class name="hib.model.User" table="T_USER" schema="SCOTT" >
            <id name="id" type="java.lang.String">
                <column name="ID" length="20" />
                <generator class="assigned" />
            </id>
            <property name="username" type="java.lang.String">
                <column name="USERNAME" length="20" not-null="true">
                    <comment>用户名称</comment>
                </column>
            </property>
            <property name="age" type="java.lang.Integer">
                <column name="AGE" length="10" not-null="true" />
            </property>
        </class>
    </hibernate-mapping>
    -----------------------------------------------------------------

     

    进行观察之后发现

    展开全文
  • 正确规范接口文档

    万次阅读 多人点赞 2018-05-17 14:14:27
    前言 正规的团队合作或者是项目对接,接口文档是非常重要的,一般接口文档都是通过开发人员的。一个工整的文档显得是非重要。下面我总结自己看到的优秀接口文档。银联接口文档案例:5.2.2 统一收单线下交易查询...

    正确规范写接口文档


    前言

      正规的团队合作或者是项目对接,接口文档是非常重要的,一般接口文档都是通过开发人员写的。一个工整的文档显得是非重要。下面我总结下自己看到的优秀接口文档。


    接口规范内容

    • 接口名称
    • 场景说明
    • 接口说明
    • 请求参数
    • 响应参数
    • 错误码

    参数内容

    字段名 
    变量名 
    是否必填 
    类型 
    示例值 
    描述

    错误码内容

    名称 
    描述 
    原因 
    解决方案


    一.银联接口文档示例 (适用于接口规范文件)

    5.2.2 统一收单线下交易查询

    5.2.2.1 场景说明

    收单机构可以通过该接口主动查询订单状态,完成下一步的业务逻辑。需要调用查询接口的情况:

    当收单机构后台、网络、服务器等出现异常,收单机构系统最终未接收到支付通知;调用支付接口后,返回系统错误或未知交易状态情况;调用alipay.trade.pay,返回INPROCESS的状态;调用alipay.trade.cancel之前,需确认支付状态。


    5.2.2.2 接口说明

    公共请求参数中的method填写alipay.trade.query。


    5.2.2.2.1 请求参数
    参数参数名类型是否必填最大长度描述示例值
    out_trade_no商户订单号String32订单支付时传入的商户订单号,和网联交易号不能同时为空。trade_no,out_trade_no如果同时存在优先取trade_no20150320010101001
    .....................
    trade_no网联交易号String64网联交易号,和商户订单号不能同时为空2014112611001004680073956707

    5.2.2.2.2 响应参数
    参数参数名类型是否必填最大长度描述示例值
    trade_no网联交易号String64网联交易号2013112011001000000121536
    .....................
    out_trade_no商户订单号String32商户订单号6823789339978240
    TradeFundBill字段说明:
    参数参数名类型是否必填最大长度描述示例值
    fund_channel资金渠道String32交易使用的资金渠道ALIPAYACCOUNT
    .....................

    5.2.2.3 错误码

    错误码错误描述原因解决方案
    SYSTEMERROR接口返回错误系统超时请不要更换商户退款单号,请使用相同 参数再次调用 API。
    NOTENOUGH余额不足商户可用退 款余额不足此状态代表退款申请失败,商户可根据 具体的错误 示做相应的处理。
    ............

    二.API开发接口文档示例 (适用于http、https 接口)

    3.1.1 查询排重接口

    3.1.1.1 场景说明

    查询信息是否已存在。


    3.1.1.2 接口详情

    3.1.2.1 接口地址
    接口详情 
    地址http://www.baidu.com (正式环境)
    请求方式GET

    3.1.2.2 参数
    参数是否必填说明
    idfa广告标识符
    .........
    source渠道来源,具体值在接入时再进行分配

    3.1.2.3 返回结果
    返回结果格式JSON
    状态码10000success(调用成功)
     ......
     10010access prohibited(访问拒绝)

    3.1.1.3 调取示例

    3.1.1.3.1 查询成功


    "state": 10000, 
    "message": "success", 
    "data": { 
    "BD239708-2874-417C-8292-7E335A537FAD": 1 //已经存在 



    "state": 10000, 
    "message": "success", 
    "data": { 
    "BD239708-2874-417C-8292-7E335A537FAD": 0 //不存在 

    }


    3.1.1.3.2 接口调用失败


    "state": 10010, 
    "message": "access prohibited", 
    "data": [ 

    }


    展开全文
  • 一,前端jsp页面有一文本框输入时间 HH:mm:ss格式的 另一个文本框要求输入yyyymmdd格式的日期  时间:  由于未用到任何时间插件,只能通过js校验输入的时间是否正确,最简单的莫过于使用正则来校验了,  ...

    一,前端jsp页面有一文本框输入时间  HH:mm:ss格式的   另一个文本框要求输入yyyymmdd格式的日期

           时间:

           由于未用到任何时间插件,只能通过js校验输入的时间是否正确,最简单的莫过于使用正则来校验了,

           var regex = /^(([0-2][0-3])|([0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/;

           var一个正则表达式,这个表达式检验的就是hh:mm:ss格式的字符串。

           但是如果用户只输入10:20,而最后的  :00  省略掉,难道要提示用户重新输入吗?

           NO,只需要改一下正则表达式即可。

           var regexs = /^(([0-2][0-3])|([0-1][0-9])):[0-5][0-9]$/;

           这个正则和上边的相比只是把最后的  :ss   给去掉了。

           日期:

           直接在js中通过Date对象来进行校验,但是这种方式不推荐使用,因为在java中Date date = new Date(yyyy,mm,dd);这个方法已经不推荐了。

    二,校验

           然后,我们就可以写js来校验了
           

           //提交表单
    
           function submit(){
                  //时间
    
                  var time = form.time.value;
                  
                  var regex = /^(?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/;
    
                  if(!regex.test(time)){
    
                          var regexs = /^(?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]$/;
    
                          if(!regexs.test(time)){
    
                              alert("时间格式不正确,请输入正确格式如   10:20 或 10:20:20");
    
                              form.time.focus();//获取焦点
    
                              return;
    
                             }
    
                             form.time.value = time + ":00";
    
                  }
                    
                  //日期
                  var riqi = form.riqi.value;
                  if(riqi != ''){
                        var xxDate = new 
                         Date(riqi.substring(0,4),riqi.substring(4,6)-1,riqi.substring(6,8));
                        if(riqi.substring(0,4) != xxDate.getFullYear() || riqi.substring(4,6) != xxDate.getMonth() || riqi.substring(6,8) != xxDate.getDate()){
    
                            alert("日期格式不正确,");
    
                              form.riqi.focus();//获取焦点
    
                              return;
    }
                    }
    
           }

    三,正则

           在刚开始不太熟悉正则的时候我的js校验代码是介个样子的:

    function isTime(timeStr){
        var parts;
        parts = timeStr.spilt(":");
        if(parts.length < 1){
            return false;
        }
        
        for(i=0;i<parts.length;i++){
            if(isNaN(parts[i])){
                return false;
            }
        }
        h = parts[0];
        m = parts[1];
        if(h<0||h>23){
            return false;
        }
        if(m<0||m>59){
            return false;
        }
        if(parts.length == 3){
            if(parts[2]<0 || parts[2]>59){
                return false;
            }
        }
        return true;
    }

        这段代码和上边的正则没有对比就没有伤害。

        建议正则不太熟悉的去深入了解一下。

    展开全文
  • 输入提交文件名,检查提交的文件格式是否正确,是否以 .py结尾 email = input("Please input your email: ") while ( email.find("@") == -1 or not email.endswith('.com')): print("Wron...
  • 如何正确规范接口文档

    万次阅读 2018-03-15 15:50:37
     正规的团队合作或者是项目对接,接口文档是非常重要的,一般接口文档都是通过开发人员的。一个工整的文档显得是非重要。下面我将我看到的一篇接口文档做一个总结 开始吧!!! 接口1: 查询排重接口 ...
  • 正确规范api接口文档

    千次阅读 2019-06-06 10:28:59
    正规的团队合作或者是项目对接,接口文档是非常重要的,一般接口文档都是通过开发人员的。一个工整的文档显得是非重要。 接口1 查询排重接口: 接口详情 请求地址 /api/user/login/ 请求方式 GET ...
  • //if the email address is valid, return true,else return false function validateEmail($email) { if(@eregi('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$',$email) ){ return true;
  • JavaCSV文件的正确姿势

    千次阅读 2019-04-19 23:27:34
    本文讲述如何用java来csv文件。 CSV的意思是逗号分隔符(Comma-Separated-Values),是不同系统之间传输数据的一种常见方式。 要想csv文件需要用到java.io包。本文将讲述如何处理特殊字符。我们的目标是出...
  • java 判断 日期格式是否正确

    千次阅读 2020-05-28 16:28:04
    public boolean isValidDate(String str) { if(!isNotEmpty(str)){ ... // 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小; SimpleDateFormat format = new SimpleDateFormat("yyyy-
  • 服务器标记的格式正确

    千次阅读 热门讨论 2016-01-12 10:52:17
     错误的内容是:服务器标记的格式正确,如图所示。    这个错误指向的代码是:    如图所示:    这个bug出现的原因可能是,引用的对象的各个属性之间少了一个空格。比如,出现现在这个
  • 脚本实现输入yaml格式的文件名 然后如果输入格式正确则返回该yaml格式的列表。 #!/usr/bin/python2.7 # -*- coding: utf-8 -*- # @Date : 2018-07-21 23:23:56 # @Author : Zhou Jiaan # @Version : V1.0 import ...
  • 正则表达式验证IP和端口格式正确

    万次阅读 热门讨论 2016-11-03 10:03:22
    在网页开发中可能会遇到需要对在页面输入的ip和端口进行正确性验证,那么正则表达式就是最有力的工具: 1:ip的正则表达式: 格式是由“.”分割的四部分,每部分的范围是0-255; 每段的正则可以分几部分来:200...
  • java实现判定时间格式是否正确

    万次阅读 2017-10-11 14:38:09
    * 判断时间格式是否正确 * @param str * @return */ public static boolean isValidDate(String str) { DateFormat formatter = new SimpleDateFormat(“yyMMddhh”); //这里的时间格式根据自己
  • json格式正确却无法转换成 JSONObject

    千次阅读 2015-07-18 15:44:07
    json格式正确却无法转换成 JSONObject
  • 判断移动电话号码格式是否正确

    千次阅读 2016-12-27 16:16:10
     * 判断移动电话号码格式是否正确  * @param string  * @return  * 正确返回true;  */ public boolean isMobilNum(String string){ pattern =Pattern.compile("^[1][3-8]+\\d{9}"); matcher=pattern....
  • 教你正确使用VSCodePython

    千次阅读 2017-09-23 10:51:55
    安装flake8之后代码的时候编辑器就会提示哪里出错,代码格式不规范也会提示。打开命令行,VSCode可以直接运行终端,按快捷键 Ctrl + `输入“pipinstallflake8”安装flake8成功后,打开文件-> 首选项 -> 设置,在...
  • 检查xml格式是否正确

    千次阅读 2012-01-16 17:13:04
    1.检查xml格式 public static bool IsCorrectXmlFormat(string configuration) { bool isCorrectXmlFormat = true; try { XmlTextReader reader = new Xm
  • PHP 判断字符串是否为正确对象/数组 Json 格式

    万次阅读 热门讨论 2018-06-01 21:01:12
    根据网上一堆人说的 json_last_error(),可以判断 json_decode 后的结果 我也没多想,试了一下: json_decode('123'); var_dump(json_last_error());...了一个大家可参考: /** * 判断字符串是否...
  • poi解析excel出现格式正确

    千次阅读 2016-05-24 13:31:05
    最近有客户用最新的excel格式,即后缀为xlsx的excel做系统导入时出现bug,原来系统用来解析excel的的技术是jxl。jxl已经老早就不更新了不再支持excel后续版本的读写,没办法,只能用Apache的poi来实现。简单的使用...
  • Java检查日期格式是否正确

    千次阅读 2017-06-28 11:15:00
    需求:因为系统有很多日期格式,所以日期验证函数的输入是一个日期字符串和一个格式字符串。格式字符串用的是Java定义的格式(参考地址)。 刚开始时,觉得很简单,直接就了下面的代码。 public static ...
  • 今天同事一个查询接口的时候,出错:元素内容必须由格式正确的字符数据或标记组成。 错误原因:mybatis查询的时候,需要用到运算符 小于号:,在mybatis配置文件里面,这种会被认为是标签,所以解析错误 ...
  • 电子邮箱注册格式是什么?电子邮箱格式怎么呢?电子邮箱的需求量一直呈持续增长趋势,163.net、163vip.com、mail.tom.com等是目前极为主流的邮箱后缀,关于邮箱的选择及具体的格式让我们一起来了解下吧~
  • /^(130|131|132|133|134|135|136|137|138|139|150|151|152|153|155|156|157|158|159|180|186|187|188|189)/d{8}$/参考: 目前中国大陆三家电信运营商号段: 中国移动:134/135/136/137/138/139/150/151/152/157/159...
  • 有时候为了测试接口,需要通过Postman发送POST类型的JSON参数。 对于不熟悉Postman的童鞋可能要搞半天,因此简单截图在此分享一下。 ...另外更多详细内容参考官方文档: ...如果觉得本文对你有帮助,欢迎点赞,欢...
  • javascript前端XML格式正确性验证方法

    千次阅读 2012-03-19 15:59:09
    查找了一些资料,并且自我做了一些总结,了一个简单的xml字符串验证函数,其实现的过程主要是通过用xml解析器去解析xml字符串,如果解析错误,会报出相应的解析错误,使用该思想去验证xml格式正确性。...
  • 用VSCodepython的正确姿势

    万次阅读 多人点赞 2017-07-18 14:58:52
    推介个插件,vscode-icons可以使VScode左侧的资源管理器根据文件类型显示图标 配置flake8 安装flake8之后代码的时候编辑器就会提示哪里出错,代码格式不规范也会提示 打开命令行 输入 "pip install flake8" 安装...
  • 最近做一个项目,在使用string.Format对数据进行整理的时候,一直报错:输入字符串的格式正确。 纠结了很久。最后终于查了资料终于知道了问题所在。现在将这个问题记录一下: 在代码中,需要将结果以Json格式...
  •  //需求:匹配手机号格式是否正确  //手机号特点:11 位 纯数字 1 开头  var str=window.prompt("请输入11位的手机号");  //var str='13799861230';  //var r = new RegExp(/^1\d{10}$/);//创建正则对象 // ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 623,921
精华内容 249,568
关键字:

下的正确格式怎么写