转自:https://blog.csdn.net/jiangyu1013/article/details/52607257

package cn.wuxiangbin.StringFormat;

import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date; /**
* StringFormat解析
* 公式: %[argument_index$][flags][width][.precision]conversion
* argument_index: 可选,是一个十进制整数,用于表明参数在参数列表中的位置。
* 第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。
flags: 可选,用来控制输出格式
width: 可选,是一个正整数,表示输出的最小长度
precision:可选,用来限定输出字符数
conversion:必须,用来表示如何格式化参数的字符
*/
public class Demo01 { public static void main(String[] args) {
//案例1
System.out.println(String.format("我的名字叫%s","小明"));
//我的名字叫小明, 占位的字符一定要是s,否则报错,%是标识一定要有 //案例2
System.out.println(String.format("我叫%s,她叫%s","小明","小红"));
//我叫小明,她叫小红 //案例3
System.out.println(String.format("我叫%2$s,她叫%1$s","小明","小红"));
//我叫小红,她叫小明, 1$,2$表示参数填充顺序 /**
* conversion可以填s,那还有什么其它字母可以填呢,当然有的比如
o:结果被格式化为八进制整数
x:结果被格式化为十六进制
d:结果被格式化为十进制整数
更多的conversion类别可以参考JDK文档java.util.Formatter类
*/
//案例4
System.out.println(String.format("%o",)); //
System.out.println(String.format("%x",)); // /**
* 接下来我们了解flag和width的用法
flag是用来控制输出格式的,比如左对齐,金额用逗号隔开等
width:表示最小宽度
*/
//案例5
System.out.println(String.format("%1$,d",));//12,302,562
//","就是flag,用于金额千分位隔开,也可以写成"%,d" //案例6
System.out.println(String.format("%1$08d",));//00123456
//0也是flag, 表示结果用0填充,8 就是width,表示最少要8位,d就是conversion /**
* 接下来说下[.precision]
这个单词翻译下是精度的意思,我们发现了前面有个小数点".",因此不难联想到这个是关于浮点数类型的
只有当传入的数据是浮点数时这个才有用,整数或者日期类型的数据都不能用
*/
//案例7
System.out.println(String.format("%1$.2f",12.12555));//12.13
//"."就是precision,表示精度,数字表示取精度位
// f是conversion表示传入的数字是浮点型,
/**
* 用法说明:
* 对于浮点转换 'e'、'E' 和 'f',精度是小数点分隔符后的位数。如果转换是 'g' 或 'G',那么精度是舍入计算后所得数值的所有位数。如果转换是 'a' 或 'A',则不必指定精度。
对于字符、整数和日期/时间参数类型转换,以及百分比和行分隔符转换,精度是不适用的;如果提供精度,则会抛出异常。
*/ /**
* 具体应用:
* 用于表示日期和事件类型的格式说明符语法:
* %[argument_index$][flags][width]conversion
*需要注意的是conversion 是一个由两字符组成的序列。第一个字符是 't' 或 'T'。
也就是说用conversion的时候首先必要写一个"t",然后在写其它conversion */ //案例7
System.out.format("Local time: %tT", Calendar.getInstance());
//Local time: 21:49:44
System.out.format("Local time: %tT", new Date());
System.out.println();
//Local time: 21:50:08
System.out.format("%1$tY-%1$tm-%1$te", new Date());
System.out.println();
//2018-09-1
/**
* 需要批量进行格式化时,考
* 虑下DateFormat, MessageFormat, NumberFormat 把他们封装成一个静态工具类或许更好
*/
DateFormat dateInstance = DateFormat.getDateInstance();
//
}
}

String formate的语法解析及简单用法的更多相关文章

  1. 使用 java 实现一个简单的 markdown 语法解析器

    1. 什么是 markdown Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的 ...

  2. JS的简单用法

    JS的简单用法 参考:http://www.w3school.com.cn/js/js_switch.asp JavaScript 是网络的脚本语言 JavaScript 是可插入 HTML 页面的编 ...

  3. Python3.x:bs4解析html基础用法

    Python3.x:bs4解析html基础用法 代码: import urllib.request from bs4 import BeautifulSoup import re url = r'ht ...

  4. Boost学习之语法解析器--Spirit

    Boost.Spirit能使我们轻松地编写出一个简单脚本的语法解析器,它巧妙利用了元编程并重载了大量的C++操作符使得我们能够在C++里直接使用类似EBNF的语法构造出一个完整的语法解析器(同时也把C ...

  5. NSCharacterSet 简单用法

    NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...

  6. Knockout简单用法

    Knockout简单用法 在最近做的一个项目中,页面数据全部通过js ajax调用webapi接口获取,也就是说页面的数据全部使用javascript脚本填充,这就想到了使用一个MVVM模式的js框架 ...

  7. Func和Action委托简单用法

    Func和Action类是特殊的类型,它们允许你在不必指定自定义委托类型的情况下,去使用委托.在整个.NET框架中都可以使用它们.例如,在我们考察并行计算时,你也会看到这两个类的示例. 上面一段文字是 ...

  8. Generator函数语法解析

    转载请注明出处: Generator函数语法解析 Generator函数是ES6提供的一种异步编程解决方案,语法与传统函数完全不同.以下会介绍一下Generator函数. 写下这篇文章的目的其实很简单 ...

  9. JSP编译成Servlet(一)语法树的生成——语法解析

    一般来说,语句按一定规则进行推导后会形成一个语法树,这种树状结构有利于对语句结构层次的描述.同样Jasper对JSP语法解析后也会生成一棵树,这棵树各个节点包含了不同的信息,但对于JSP来说解析后的语 ...

随机推荐

  1. redis数据库-VUE创建项目

    redis数据库 ''' 关系型数据库: mysql, oracle 非关系型数据库(nosql): redis,mongodb (没有表的概念) key-value mongodb: json 数据 ...

  2. jsp页面怎么引入js

    人老了,容易忘记事情,再此记录 这里需要注意的是js文件夹要直接放在WebRoot或者WebContent文件夹下面,不要放在WEB-INF下面.因为TomCat对WEB-INF这个文件夹下面的资源是 ...

  3. shutil

    import shutil#功能是将db文件中的内容拷贝到haha这个文件中去,但是haha原有的内容会被清空#shutil.copyfileobj(open('db','r',encoding='u ...

  4. docker开发实践

    一:docker的定义和使用场景: Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VM ...

  5. Java实训:实训一 ——长春职业技术学院 16级网络工程

    Java实训:实训一 本文会解释一些设计思路. 想看具体过程,请转:https://www.cnblogs.com/lxwlxw/p/10114187.html 笑维的码云项目命名不太对,所以我来:h ...

  6. 活代码LINQ——05

    片段代码: ' Exercise 9.3 Solution: Invoice.vb ' Invoice class. Public Class invoide ' declare variables ...

  7. Triangle Count

    Given an array of integers, how many three numbers can be found in the array, so that we can build a ...

  8. linux(ubuntu)GCC编译包含库函数的问题

    GCC 编译命令通常为:gcc hello.c -o hello.out 注意:若hello.c中引用有库函数(比如math.h),直接编译会出错 "/tmp/ccalvMPY.o: In ...

  9. 逐帧动画 两种实现方式 css和js

    第一种: css部分: <style> #foxtail{ background: url(../img/foxtail.png) 0 0 no-repeat; width: 156px; ...

  10. [HAOI2008]移动玩具

    这又是一道神奇的搜索题...只要记录每种状态...然后暴力判断这种状态往后一步的情况... 广搜出最优解即可... 呆码: #include<iostream> #include<c ...