Format —— Java & Android
来源:互联网 发布:五行量化指标源码 编辑:程序博客网 时间:2024/05/20 07:34
1. ParsePosition
Format的子类用来记录当前的解析位置,当要分段解析一个字符串时
如:
NumberFormat format = NumberFormat.getInstance();
ParsePosition pp = new ParsePosition(0);
String target = "1'12'123'1234";
while (pp.getIndex() < target.length()){
System.out.println(format.parse(target, pp));
pp.setIndex(pp.getIndex() + 1);
}
输出:
1
12
123
1234
2. FieldPosition
Format的子类用来记录特定Field在格式化后的字符串中的起始位置,其中endIndex是所占最后一个位置+1
如:
NumberFormat numForm = NumberFormat.getInstance();
StringBuffer sb = new StringBuffer();
FieldPosition pos = new FieldPosition(NumberFormat.FRACTION_FIELD);
numForm.format(123.45, sb, pos);
System.out.println(sb);
System.out.println("FRACTION portion is at: " + pos.getBeginIndex() +
", " + pos.getEndIndex());
输出:
beginIndex:4,endIndex:6
3. NumberFormat
简单地将进行数字和字符串的转换,包括普通数字、货币和百分数,非线程安全的
a. setMaximumFractionDigits——fMax和setMinimumFractionDigits——fMin
设置转换后的字符串中小数位数
如果fMin大于实际的小数位数,会使用padding字符填充,默认为0;
如果fMax小于实际的小数位数,会圆整到fMax位小数;
如果实际的小数位数在fMin和fMax之间,且这部分小数位0,则这部分0不会显示
如12.1000004, fMin=2, fMax=5,则输出为‘12.10’
设置fMin时,如果fMin > fMax,则fMax = fMin
设置fMax时,如果fMax < fMin,则fMin = fMax
如12.1234:
setMaximumFractionDigits(3),则输出为‘12.123’
setMinimumFractionDigits(5),则输出为‘12.12340’
b. setParseIntegerOnly是否只解析整数部分
如12.1234
setParseIntegerOnly(true),则输出为‘12’
c. setMinimumIntegerDigits——IMin和setMaximumIntegerDigits——IMAX
设置最大和最小整数位数
设置IMin时,如果IMin > IMax,则IMax = IMin
设置IMax时,如果IMax < IMin,则IMin = IMax
如果IMAX小于数字的自然整数位数则会被截断;如果IMin大于数字的自然整数位数,则会使用padding字符填充,默认为0
如1234.5
setMaximumIntegerDigits(2),则输出为‘34.5’
setMinimumIntegerDigits(5),则输出为‘01234.5’
d. 圆整模式
CEILING :向正无穷
DOWN :向0
FLOOR :向负无穷
HALF_DOWN :向最近的
HALF_EVEN :向最近的
HALF_UP :向最近的
UNNECESSARY :若需要圆整操作,则抛出异常
UP :正数向正无穷,负数向负无穷
4. DecimalFormatSymbols
DecimalFormat用来记录特殊符号的,例如在解析时什么符号被当作NaN,在格式化时NaN以什么形式输出
可以设置的符号有:
货币符号
小数和整数之间的分隔符
千分位分隔符
无穷大
NaN
科学计数法中指数和非指数之间的分隔符
负数签名的负号
0
百分号
模式分隔符
货币中小数和整数之间的分隔符
4. DecimalFormat
提供复杂强大的字符串和数字之间的转换功能,包括普通数字、货币和百分数,非线程安全的
可以设置数字的格式,以供解析和格式化时使用,可以为特殊意义的字符或字符串设置格式化或解析表示
a. setDecimalSeparatorAlwaysShown是否显示小数点,false则表示不需要显示时不显示,而true却相反
如1234,false时‘1234’,true时‘1234.’
b. 模式
0和#都表示数字,但是#表示如果0可以省去则省去,0正好相反
0和.之间只能是0,不能有其他字符
模式中的小数模式确定FMax和FMin
如#.##,FMax=2,FMin=0
#.0#,FMax=2,FMin=1
模式中的整数模式确定IMin,IMAX默认为Integer.MAX_VALUE除非显示设定
c. grouping
指定整数部分如何分组显示,各个分组之间使用grouping seperator
在模式中使用,表示分组分隔符,最后一个分组分隔符到模式尾部(如果没有小数模式部分)或者.之间的#或0的数目即为分组的长度
在普通java平台上,就只有这一个长度
在Android中这个长度称为primary grouping size(PGS),还有一个secondary grouping size(SGS),如果在模式中分组分隔符数目为1则两个长度一致
如果PGS和SGS不一致,则PGS只应用于包含最低有效位的分组
SGS的大小确定方式:最后两个分组分隔符之间的#或0的数目
PGS用于整数的最低有效位的显示,SGS与其他有效位的显示
如12345678,PGS=4,SGS=3,则输出为‘1,234,5678’
d. padding (only in Android)
*作为padding转移符号,其后的任何字符(16位长度)作为填充字符
填充宽度:*和填充符号之外的字符数目
如:“*#,##,####”,长度8
“*####”,长度3
e. 科学计数法
指数模式是指指数字符(通常为E或e)后的模式部分,非指数模式指的是指数字符前面的模式部分
指数部分数字长度由指数模式的长度决定
指数模式的第一个数字字符必须是0,而不能是#
f. significant digits
显示出来的数字的数目可以使用两种方式来确定:
一种是:设定(通过模式或APIs)小数和整数的位数来共同确定
还有就是:通过有效数字位数来确定,就是通过模式中的@和#确定最小——MinSD和最大——MaxSD有效数字的数目,模式是否包含@表示是否启用该方式
如:“@@##”,MinSD=2,MaxSD=4
MinSD和MaxSD对解析没有影响
模式中在第一个@之前的#不作为有效数字的计数,但是可以用于表示分组大小
如“#,#@#”,MinSD=1,MaxSD=2,PGS=3
若使用本方法,则不能有.和0
使用该方式,则使用APIs设置的小数和整数的位数被忽略,小数和整数的位数就由MinSD、MaxSD确定
如对于“@@##”,“3.14159”输出为“3.142”,“12.3004”输出为“12.3”
5. ChoiceFormat
基于一个数字返回一个固定的字符串,对于像英语这样有单数和复数之分的比较有用
使用前需要制定一个数字数组Na(必须是升序的长度L)和字符串数组Sa
返回字符串的规则是:
对于给的数字a,在数字数组中找到一个索引j,使得Na[j]<= a < Na[j+1];
若没有这样的j,若a < Na[0]则j=0,若a > Na[L-1]则j=L-1
最后返回Sa[j]
如果通过模式字符串指定,则在比较时Na[j]<= a < Na[j+1]对应的Na[j]使用<连接字符串,则要变成Na[j]< a < Na[j+1]
如“1#Sun|2#Mon|3#Tue|4#Wed|5#Thur|6#Fri|7#Sat”,则“8”输出为Sat,“1.1”输出为Sun
“0#are no files|1#is one file|1<are many files”,则“1.1”输出为“are many files”
6. MessageFormat
其他Formatters的集合体
a. 获取一组对象,格式化这些对象,然后将格式化后的字符串插入到模式中的适当位置
每个对象的插入位置的模式决定了如何格式化其本身
每个插入位置的格式化模式,可以通过APIs设置,也可以通过在构造MessageFormat时在模式中指定
b. 从字符串中解析出一组对象,可以是Number,Date
详细用法见API文档
7. DateFormat
简单地解析和格式化日期时间
8. SimpleDateFormat
提供强大的解析和格式化日期时间的功能
a. set2DigitYearStart
设置解析时两位年的起始年(SY)
年份的确定规则:(year为解析的两位年份)
year += SY / 100 * 100; //确保和起始年在同一个世纪
if (year < SY) year += 100;
默认情况下,SY为SimpleDateFormat创建时时间的年份-80
Format的子类用来记录当前的解析位置,当要分段解析一个字符串时
如:
NumberFormat format = NumberFormat.getInstance();
ParsePosition pp = new ParsePosition(0);
String target = "1'12'123'1234";
while (pp.getIndex() < target.length()){
System.out.println(format.parse(target, pp));
pp.setIndex(pp.getIndex() + 1);
}
输出:
1
12
123
1234
2. FieldPosition
Format的子类用来记录特定Field在格式化后的字符串中的起始位置,其中endIndex是所占最后一个位置+1
如:
NumberFormat numForm = NumberFormat.getInstance();
StringBuffer sb = new StringBuffer();
FieldPosition pos = new FieldPosition(NumberFormat.FRACTION_FIELD);
numForm.format(123.45, sb, pos);
System.out.println(sb);
System.out.println("FRACTION portion is at: " + pos.getBeginIndex() +
", " + pos.getEndIndex());
输出:
beginIndex:4,endIndex:6
3. NumberFormat
简单地将进行数字和字符串的转换,包括普通数字、货币和百分数,非线程安全的
a. setMaximumFractionDigits——fMax和setMinimumFractionDigits——fMin
设置转换后的字符串中小数位数
如果fMin大于实际的小数位数,会使用padding字符填充,默认为0;
如果fMax小于实际的小数位数,会圆整到fMax位小数;
如果实际的小数位数在fMin和fMax之间,且这部分小数位0,则这部分0不会显示
如12.1000004, fMin=2, fMax=5,则输出为‘12.10’
设置fMin时,如果fMin > fMax,则fMax = fMin
设置fMax时,如果fMax < fMin,则fMin = fMax
如12.1234:
setMaximumFractionDigits(3),则输出为‘12.123’
setMinimumFractionDigits(5),则输出为‘12.12340’
b. setParseIntegerOnly是否只解析整数部分
如12.1234
setParseIntegerOnly(true),则输出为‘12’
c. setMinimumIntegerDigits——IMin和setMaximumIntegerDigits——IMAX
设置最大和最小整数位数
设置IMin时,如果IMin > IMax,则IMax = IMin
设置IMax时,如果IMax < IMin,则IMin = IMax
如果IMAX小于数字的自然整数位数则会被截断;如果IMin大于数字的自然整数位数,则会使用padding字符填充,默认为0
如1234.5
setMaximumIntegerDigits(2),则输出为‘34.5’
setMinimumIntegerDigits(5),则输出为‘01234.5’
d. 圆整模式
CEILING :向正无穷
DOWN :向0
FLOOR :向负无穷
HALF_DOWN :向最近的
HALF_EVEN :向最近的
HALF_UP :向最近的
UNNECESSARY :若需要圆整操作,则抛出异常
UP :正数向正无穷,负数向负无穷
4. DecimalFormatSymbols
DecimalFormat用来记录特殊符号的,例如在解析时什么符号被当作NaN,在格式化时NaN以什么形式输出
可以设置的符号有:
货币符号
小数和整数之间的分隔符
千分位分隔符
无穷大
NaN
科学计数法中指数和非指数之间的分隔符
负数签名的负号
0
百分号
模式分隔符
货币中小数和整数之间的分隔符
4. DecimalFormat
提供复杂强大的字符串和数字之间的转换功能,包括普通数字、货币和百分数,非线程安全的
可以设置数字的格式,以供解析和格式化时使用,可以为特殊意义的字符或字符串设置格式化或解析表示
a. setDecimalSeparatorAlwaysShown是否显示小数点,false则表示不需要显示时不显示,而true却相反
如1234,false时‘1234’,true时‘1234.’
b. 模式
0和#都表示数字,但是#表示如果0可以省去则省去,0正好相反
0和.之间只能是0,不能有其他字符
模式中的小数模式确定FMax和FMin
如#.##,FMax=2,FMin=0
#.0#,FMax=2,FMin=1
模式中的整数模式确定IMin,IMAX默认为Integer.MAX_VALUE除非显示设定
c. grouping
指定整数部分如何分组显示,各个分组之间使用grouping seperator
在模式中使用,表示分组分隔符,最后一个分组分隔符到模式尾部(如果没有小数模式部分)或者.之间的#或0的数目即为分组的长度
在普通java平台上,就只有这一个长度
在Android中这个长度称为primary grouping size(PGS),还有一个secondary grouping size(SGS),如果在模式中分组分隔符数目为1则两个长度一致
如果PGS和SGS不一致,则PGS只应用于包含最低有效位的分组
SGS的大小确定方式:最后两个分组分隔符之间的#或0的数目
PGS用于整数的最低有效位的显示,SGS与其他有效位的显示
如12345678,PGS=4,SGS=3,则输出为‘1,234,5678’
d. padding (only in Android)
*作为padding转移符号,其后的任何字符(16位长度)作为填充字符
填充宽度:*和填充符号之外的字符数目
如:“*#,##,####”,长度8
“*####”,长度3
e. 科学计数法
指数模式是指指数字符(通常为E或e)后的模式部分,非指数模式指的是指数字符前面的模式部分
指数部分数字长度由指数模式的长度决定
指数模式的第一个数字字符必须是0,而不能是#
f. significant digits
显示出来的数字的数目可以使用两种方式来确定:
一种是:设定(通过模式或APIs)小数和整数的位数来共同确定
还有就是:通过有效数字位数来确定,就是通过模式中的@和#确定最小——MinSD和最大——MaxSD有效数字的数目,模式是否包含@表示是否启用该方式
如:“@@##”,MinSD=2,MaxSD=4
MinSD和MaxSD对解析没有影响
模式中在第一个@之前的#不作为有效数字的计数,但是可以用于表示分组大小
如“#,#@#”,MinSD=1,MaxSD=2,PGS=3
若使用本方法,则不能有.和0
使用该方式,则使用APIs设置的小数和整数的位数被忽略,小数和整数的位数就由MinSD、MaxSD确定
如对于“@@##”,“3.14159”输出为“3.142”,“12.3004”输出为“12.3”
5. ChoiceFormat
基于一个数字返回一个固定的字符串,对于像英语这样有单数和复数之分的比较有用
使用前需要制定一个数字数组Na(必须是升序的长度L)和字符串数组Sa
返回字符串的规则是:
对于给的数字a,在数字数组中找到一个索引j,使得Na[j]<= a < Na[j+1];
若没有这样的j,若a < Na[0]则j=0,若a > Na[L-1]则j=L-1
最后返回Sa[j]
如果通过模式字符串指定,则在比较时Na[j]<= a < Na[j+1]对应的Na[j]使用<连接字符串,则要变成Na[j]< a < Na[j+1]
如“1#Sun|2#Mon|3#Tue|4#Wed|5#Thur|6#Fri|7#Sat”,则“8”输出为Sat,“1.1”输出为Sun
“0#are no files|1#is one file|1<are many files”,则“1.1”输出为“are many files”
6. MessageFormat
其他Formatters的集合体
a. 获取一组对象,格式化这些对象,然后将格式化后的字符串插入到模式中的适当位置
每个对象的插入位置的模式决定了如何格式化其本身
每个插入位置的格式化模式,可以通过APIs设置,也可以通过在构造MessageFormat时在模式中指定
b. 从字符串中解析出一组对象,可以是Number,Date
详细用法见API文档
7. DateFormat
简单地解析和格式化日期时间
8. SimpleDateFormat
提供强大的解析和格式化日期时间的功能
a. set2DigitYearStart
设置解析时两位年的起始年(SY)
年份的确定规则:(year为解析的两位年份)
year += SY / 100 * 100; //确保和起始年在同一个世纪
if (year < SY) year += 100;
默认情况下,SY为SimpleDateFormat创建时时间的年份-80
0 0
- Format —— Java & Android
- 再探Java基础——String.format(String format, Object… args)的使用
- 再探Java基础——String.format(String format, Object… args)的使用
- JAVA字符串格式化——format()时间日期格式化
- String.format方法,Java常用类库——Formatter
- format——MATLAB
- Python——format
- Java format
- java Format
- java:Format
- Android中String资源文件的String.format方法(java)
- Android中String资源文件的String.format方法(java)
- string 报错——Android 2.3SDK中关于xml的format问题
- Android自定义控件热身——自定义属性attrs.xml中format详解
- Android incorrect AVA format
- Android XML format设置
- Android Format的使用
- Android Format的使用
- /**切控件圆角 设置边框*/
- 地图与定位(七)高德定位服务
- 移动端web页面知识小结之meta部分
- ajaxFileUpload+SpringMVC框架+maven 实现文件上传
- jsp及servlet分别实现简单的计算器
- Format —— Java & Android
- A + B Problem II(高精度加法)
- elasticsearch 修改mapping
- Win7下使用U盘安装Ubuntu16.04双系统
- Hibernate缓存
- /**获取字符串所占大小*/
- 通过ADB命令删除本地文件后,Andorid系统图库不更新的问题
- Java 中 HashMap 初始化时赋值
- Spring面向切面编程的三种方式以及常用相关案例总结