Formatter类格式化抽象语法: %[argument_index][flags][width][.precision]conversion
i.用"-“标志来改变对齐方向(默认右对齐),添加了”-"表示左对齐 ii.width: 控制一个域的最小尺寸, iii.precision: 用来指明最大尺寸,用于String时,它表示打印String时输出字符的最大数量.用于浮点数时,表示小数显示的位数(默认6位),小数过多则舍入,过少则在尾部补零.用于整数时,会出发异常.
b对于各种类型都是合法的,但非boolean基本类型或者Boolean对象,只要不为null,转换结果永远为true(数字0结果为true)
String.format() (1) 是一个static方法,接受与Formatter.format()方法一样的参数,但返回一个String对象.(2) String.format()内部,它也是创建一个Formatter对象,然后将你传入的参数转给Formatter.(1)字符说明:
字符说明B指定字符B\xhh十六进制值为oxhh的字符\uhhhh十六进制表示为oxhhhh的Unicode字符\t制表符Tab\n换行符\r回车\f换页\e转移(Escape)(2)字符类说明
字符类说明.任意字符[abc]包含a,b和c的任何字符(和a或b或c作用相同)[abc]除了a,b和c之外任何字符串(否定)[a-zA-Z]从a到z或从A到Z的任何字符(范围)[abc[hij]任意a,b,c,h,i和j字符(与a或b或c或h或i或j作用相同)(合并)[a-z&&[hij]]任意的h,i或j(交)\s空白符(空格,tab,换行,换页和回车)§非空白符([^\s])\d数组[0-9]\D非数字[0-9]\w词字符[a-zA-Z0-9]\W非此字符[^\w](3)边界匹配符
字符类说明.任意字符[abc]包含a,b和c的任何字符(和a或b或c作用相同)[abc]除了a,b和c之外任何字符串(否定)[a-zA-Z]从a到z或从A到Z的任何字符(范围)[abc[hij]任意a,b,c,h,i和j字符(与a或b或c或h或i或j作用相同)(合并)[a-z&&[hij]]任意的h,i或j(交)\s空白符(空格,tab,换行,换页和回车)§非空白符([^\s])\d数组[0-9]\D非数字[0-9]\w词字符[a-zA-Z0-9]\W非此字符[^\w]贪婪型:量词总是贪婪的,除非有其他的选项被设置.贪婪型表达式会为所有可能的模式发现尽可能多的匹配.导致此问题的一个典型理由就是嘉定我们的模式技能匹配第一个可能的字符组,如果它是贪婪的,那么它就会继续往下匹配.
勉强型:用问号来制定,这个量词匹配满足模式所需的最少字符数,也称作懒惰的,最少匹配的,非贪婪的,不贪婪的.
占有型:目前,这种类型的量词只有在Java中才可用.当正则表达式被应用于字符串时,它会产生相当多的状态,以便在匹配失败的时候可以回溯.它们常常可以用于防止正则表达式时空,因此可以使用正则表达式执行起来更有效.
贪婪型勉强型占有型如何匹配X?X??X?+一个或零个XX*X*?X*+零个或多个XX+X+?X++一个或多个XX{n}X{n}?X{n}+恰好n次XX{n,}X{n,}?X{n,}+至少n次XX{n,m}X{n,m}?X{n,m}+X至少n次,且不超过m次(1) Pattern.compile()方法用来编译正则表达式并返回一个Pattern对象.
(2) Pattern对象的matcher()方法会生成一个Matcher对象.
(3) Matcher的方法,能够判断各种不同配型的匹配是否成功
i.boolean matches() :判断整个输入字符串是否匹配正则表达式模式
ii.boolean lookingAt() :判断该字符串的始部分是否匹配正则表达式模式
iii.boolean find()
a.find() :像迭代器遍历输入字符串b.find(int i) : i表示字符串字符的位置,并以其作为搜索的起点vi.组号为0表示整个表达式,组号1表示被第一对括号括起来的组
例: A(B(C))D 第0组:ABCD 第1组:BC 第2组:Cv.int groupCount() : 返回该匹配器的模式中的分组数目,不包括第0组
vi.String group()
a.group() :返回第一次匹配操作的第0组b.group(int i) : 返回前一次匹配操作期间指定的组号,如果匹配成功,但没有输入字符串中任意一部分,返回nullvii.int start() : 返回先前匹配的起始位置的索引
viii.int end() :返回所匹配的最后字符索引加一的值
ix.matches() :只有在这个输入都匹配正则表达式时才会成功
x.lookingAt() : 只要输入的第一部分匹配就会成功
xi.reseet() :将Matcher对象重新设置到当前字符序列的起始位置
(4) Pattern标记
Pattern类的compile()方法还有另一个版本,接受标记参数,调整匹配的行为:Pattern Pattern.compile(String regex, int flag)
Pattern标记(flag常量)
编译标记效果Pattern.CANONEQ两个字符当且仅当它们的完全规范分解相匹配时,就认为它们是匹配的.例如:如果我们指定这个标记,表达式a\u030A就会匹配字符串?.在默认的情况下,匹配不考虑规范的等价性.Pattern.CASEINSENSITIVE(?i)默认情况下,大小写不敏感的匹配只有US-ASCII字符集中的字符才能进行.这个标记运行模式匹配不必考虑大小写(大写或小写).通过指定UNICODECASE标记及结合此标记,基于Unicode的大小写不敏感的匹配模式也可以开启了Pattern.COMMENTS(?x)在这种模式下,空格符将被忽略掉,并且以#开始直到行末的注释也会被忽略掉.通过嵌入的标记表达式也可以开启Unix的行模式Pattern.DOTALL(?s)在dotall模式中,表达式".“匹配所有字符,包括行终结符.默认情况下,”."表达式不匹配行终结符Pattern.MULTILINE(?m)在多行模式下,表达式和 分 别 匹 配 一 行 的 开 始 和 结 束 . 还 匹 配 输 入 字 符 串 的 开 始 , 而 分别匹配一行的开始和结束.还匹配输入字符串的开始,而 分别匹配一行的开始和结束.还匹配输入字符串的开始,而还匹配输入字符串的结尾.默认情况下,这些表达式仅匹配输入的完整字符串的开始和结束Pattern.UNICODECASE(?u)当指定这个标记,并且开启CASEINSENSITIVE时,大小写不敏感的匹配将按照与Unicode标准相一致的方式进行.默认情况下,大小写不敏感的匹配假定只能在US-ASCII字符集中的字符才能进行Pattern.UNIXLINES(?d)这种模式下,在. ^和$行为中,只识别行终结符\nStringReader将String转化为刻度的流对象,然后用这个对象来构造BufferReader对象
readLine() :将一行输入转为String对象
Scanner构造器可以接受任何类型的输入对象,包括File对象、InputStream、String或Readable对象
Scanner有hasNext方法,用以判断下一个输入分词是否所需的类型