`

Java一些字符串的格式化

    博客分类:
  • Java
 
阅读更多
Java数字、货币值和百分数等的格式化处理:http://comeonbabye.iteye.com/blog/1296577
补0
指定显示的最多(或最少)整数位和小数位。如
double d = 10000.0 / 3.0;    
NumberFormat numberFormat = NumberFormat.getNumberInstance();    
numberFormat.setMaximumFractionDigits(4);    
numberFormat.setMinimumIntegerDigits(6);    
String numberString = numberFormat.format(d);    
System.out.println(numberString);   

输出:
003,333.3333。整数位不够的补零,小数截去部分四舍五入。
    也可以利用NumberFormat的一个子类DecimalFormat来指定输出格式。#改为0就是补0
DecimalFormat decimalFormat = new DecimalFormat("######.0000");    
String s = decimalFormat.format(d);   

和前面一样,显示六个整数位和4个小数位。

DecimalFormat
DecimalFormat format = new DecimalFormat(".0000");
String str = format.format(Double.toString(time));
doubale a = Double.parseDouble(str);



SimpleDateFormat
public static  String formatDate(Date date)throws ParseException{
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(date);
    }
    
    public static Date parse(String strDate) throws ParseException{
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.parse(strDate);
    }


MessageFormat
http://woshixy.blog.51cto.com/5637578/1077381

java.text.Format体系总结
http://jianzong2000.iteye.com/blog/406304
1.1. Format的方法
java.text.Format做为一个抽象类,有二个抽象方法,
format(Object obj, StringBuffer toAppendTo, FieldPosition pos):格式化一个对象,并将得到的文本追加到给定的字符缓冲区。是将obj格式化为字符串,并加入到toAppendTo中。
parseObject(String source, ParsePosition pos): 分析字符串文本,生成一个对象。是format方法的逆向方法,将String转化为Object。
另外的format和parseObject这两个方法的重载。
方法formatToCharacterIterator(Object obj)并非抽象方法,api上要求子类必须实现这个方法。

1.2. Format的子类
Java 2 平台为格式化日期、消息和数字分别提供了三个特殊的 Format 的子类:DateFormat(抽象类)、MessageFormat 和 NumberFormat(抽象类)。
    ——>DateFormat   ——>SimpleDateFormat
Format  ——>MessageFormat
——>NumberFormat——>ChoiceFormat
——> DecimalFormat用于格式化十进制数字

1.3. DateFormat的用法
DateFormat 是日期/时间格式化子类的抽象类, 有一些static的get***Instance()方法来获得实例。通过设置结果的长度和地区,来获得日期,时间等的格式formatter。不太常用。
一般会使用SimpleDateFormat子类,new SimpleDateFormat("yyyy-MM-dd")或new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),来获得常用的时间格式。DateFormat 的get***Instance()方法一般也是获得SimpleDateFormat。
看DateFormat的源代码有个疑问,如果继承了DateFormat类,那DateFormat. get***Instance()的方法还是返回SimpleDateFormat? DateFormat.get是私有的,也不能覆盖。
DateFormat类中还有一些static的字段,如WEEK_OF_MONTH_FIELD, WEEK_OF_YEAR_FIELD。api上说在FieldPosition中使用,用于对齐。
java.util.Calendar也是日期操作相关的类,实现类为GregorianCalendar。主要对日期进行操作。注意add方法和roll方法的区别,roll方法不更改更大的字段。还有一些静态的变量DAY_OF_MONTH,DAY_OF_WEEK等,在get/set/add/roll方法中使用。

1.4. MessageFormat的用法
和SimpleDateFormat一样,也需要传入一个pattern。如
String result = MessageFormat.format(
     "At {1,time} on {1,date}, there was {2} on planet {0,number,integer}.",
     7, new Date(), “ a message ”);
其中
{1,time}中1是指第几个参数,time是指格式化的类型。根据api进行设置,是调用NumberFormat和DateFormat进行格式化的。
还可以调用parse方法将字符串转化为Obejct。

[color=darkblue]1.5. NumberFormat的用法
1.5.1. NumberFormat的介绍 [/color]
NumberFormat 是所有数字格式的抽象基类。类结构与DateFormat类似。主要也是通过get***Instance方法获得实现类DecimalFormat。
比较常用的方法有:
setParseIntegerOnly:只影响分析。设为true,则忽略小数点以后的位置。
setDecimalSeparatorAlwaysShown:只影响格式化,且只影响小数点后没有数字的情况?设置分组符号是否显示。例如1,234中的,号是否显示。
setGroupingUsed:是否分组。如果此格式中使用了组,则返回 true。例如,在英国语言环境中,如果设置了组,则数 1234567 可能被格式化为 "1,234,567"。
还可以设置小数/整数部分的最大/小位数。
关于parse方法中的ParsePosition 和 format方法中的FieldPosition待研究。

1.5.2. 子类DecimalFormat
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字。在DecimalFormat中传入pattern,可以自定义格式化类型。舍入方式是half-even(四舍五入)。
DecimalFormat 模式包含正数和负数子模式,例如 "#,##0.00;-#,##0.00"。;后面的代表负数模式。单独的 "0.00" 等效于 "0.00;-0.00"。如果存在显式的负数子模式,则它仅指定负数前缀和后缀;
0:代表是数字;如果不存在则显示为0;
#:代表是数字;
,:分组分隔符;没有则不分组

1.5.3. 子类ChoiceFormat
ChoiceFormat通常用于在 MessageFormat 中处理复数。创建 ChoiceFormat 时,可以指定一个 format 数组和一个 limit 数组。这些数组的长度必须相同。
如api中用于转换星期的例子
double[] limits = {1,2,3,4,5,6,7};
String[] monthNames = {"Sun","Mon","Tue","Wed","Thur","Fri","Sat"};
ChoiceFormat form = new ChoiceFormat(limits, monthNames);
ParsePosition status = new ParsePosition(0);
for (double i = 0.0; i <= 8.0; ++i) {
     status.setIndex(0);
     System.out.println(i + " -> " + form.format(i) + " -> "
                              + form.parse(form.format(i),status));
}
form.format(i)根据limits的数字转换为星期几的名称。limits中的数字必须按升序排列,如果提供的数字不在limits中,则选择使用第一个或最后一个索引。
form.parse(form.format(i),status),则根据Name转换为limits中的值。

1.5.4. ChoiceFormat的例子
下面是ChoiceFormat的api中一个较复杂的带模式格式的例子, 和MessageFormat一起使用:
//生成ChoiceFormat
double[] filelimits = {0,1,2};
String[] filepart = {"are no files","is one file","are {2} files"};//这里的2是指从testArgs中取第二个元素的值
ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);

//定义Format数组testFormats,分别为ChoiceFormat,null, NumberFormat
//ChoiceFormat用于{0}, null用于{1}, NumberFormat用于{2}
Format[] testFormats = {fileform, null, NumberFormat.getInstance()};

//将MessageFormat的formats设为testFormats
//testFormats中的格式顺序对应于模式字符串中的格式元素的顺序
//最好使用setFormatsByArgumentIndex方法,而不是使用setFormats
MessageFormat pattform = new MessageFormat("There {0} on {1}");
pattform.setFormats(testFormats);

//进行fomat
Object[] testArgs = {null, "ADisk", null};
for (int i = 0; i < 4; ++i) {
     testArgs[0] = new Integer(i);
     testArgs[2] = testArgs[0];
//此时的testArgs值为{0, "ADisk",0}
//根据MessageFormat的定义,对testArgr元素进行处理
     System.out.println(pattform.format(testArgs));
}

1.5.5. ChoiceFormat的pattern构造方法
ChoiceFormat还有另外一个构造方法,传入pattern。
为 ChoiceFormat 对象指定一个模式是相当直接的。例如:
ChoiceFormat fmt = new ChoiceFormat(
      "-1#is negative| 0#is zero or fraction | 1#is one |1.0<is 1+ |2#is two |2<is more than 2.");
其中数字#是按照大小顺序排列的, formate方法中传入参数x,如果x在0,1之间,则按照0处理。

1.5.6. 其它的数字格式化
另外在对数字进行格式化时,也可以考虑使用java.math.BigDecimal。
如setScale(int newScale,int roundingMode):newScale指精确度,即保留几位小数。roundingMode指舍入模式,常用的是四舍五入。DecimalFormat貌似只能使用四舍五入,如果使用别的舍入方式,就要使用BigDecimal了。
java.lang.Integer中的几个转换进制的方法也比较实用
toBinaryString(int i): 以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
toHexString(int i): 以十六进制的无符号整数形式返回一个整数参数的字符串表示形式
toOctalString(int i) :以八进制(基数 8)无符号整数形式返回一个整数参数的字符串表示形式。
分享到:
评论

相关推荐

    字符串格式化需求规格说明书

    1. **格式化字符串的基本语法**:在各种编程语言中,如Python的f-string、C++的printf、Java的String.format等,都有各自的字符串格式化方法。理解这些语法对于正确地构造和输出格式化的字符串至关重要。 2. **变量...

    json字符串格式化工具

    "json字符串格式化工具"是针对JSON数据进行美化和整理的工具,主要功能包括将紧凑的JSON字符串转换为易于阅读的格式,添加缩进、换行,以及高亮显示键值对等。这对于开发者调试API接口、查看JSON响应或者理解复杂...

    java验证字符串是否符合json格式

    在Java编程中,验证字符串是否符合JSON(JavaScript Object Notation)格式是一项常见的任务,尤其是在进行前后端数据交互时。JSON是一种轻量级的数据交换格式,它允许数据以键值对的形式存储,易于人阅读和编写,...

    java String 字符串格式化

    JDK1.5中,String类新增了一个很有用的静态方法,这些方法有助于开发人员对字符串的各类操作

    java字符串格式化String.format()

    ### Java字符串格式化String.format()详解 #### 一、引言 `String.format()` 方法是JDK 1.5引入的新特性,它提供了一种灵活且强大的方式来格式化字符串。这种方法类似于C语言中的`printf`函数,允许开发者通过指定...

    Java_格式化字符串 汇总

    Java中的字符串格式化功能是处理和展示数据时不可或缺的一部分,尤其在需要将各种数据类型转换为特定格式的字符串时显得尤为重要。本文将深入探讨Java中`String`类的`format()`方法,及其如何用于创建格式化的字符串...

    json字符串格式化工具JsonView

    json字符串格式化工具,不用安装,直接运行,美化json字符串,方便,快捷。json字符串格式化工具,不用安装,直接运行,美化json字符串,方便,快捷。json字符串格式化工具,不用安装,直接运行,美化json字符串,...

    Java字符串 日期 数字格式化输出-.doc

    Java 字符串日期数字格式化输出 Java 中的字符串日期数字格式化输出是一种常见的操作,特别是在数据输出和显示时。 Java 提供了多种方式来实现格式化输出,包括使用 NumberFormat、DecimalFormat 和 ...

    Java字符串格式化

    总结来说,Java字符串格式化是构建和展示文本信息的关键技术,包括使用`String.format()`和`printf()`方法,以及`StringBuilder`和`StringBuffer`类。同时,理解并处理GBK这样的特定字符编码对于处理中文字符至关...

    Json字符串格式化工具

    HiJson工具免去了我们需要联网格式化json字符串的烦恼,无需百度搜索在线格式化,只要安装了JDK,打开就可以用。

    JAVA日期与字符串的转换

    `SimpleDateFormat`是`java.text`包中的一个子类,它可以用来格式化和解析日期。下面是一个具体的例子: ```java import java.text.SimpleDateFormat; import java.util.Date; public class DateToStringConverter...

    java字符串的各种编码转换

    ### Java字符串的编码转换 在Java中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理国际化应用时,理解并掌握各种字符编码格式变得尤为重要。下面将介绍几种常见的字符编码格式以及如何在Java中实现...

    java 字符串 正则表达式 详细实例代码

    4. **日期和时间字符串格式化** - Java中的`java.util.Date`类和`java.text.SimpleDateFormat`类用于处理日期和时间。`SimpleDateFormat`允许我们自定义日期时间格式,如`"yyyy-MM-dd HH:mm:ss"`。 - 示例代码: ...

    java代码-使用java解决json字符串格式化的源代码

    java代码-使用java解决json字符串格式化的源代码 ——学习参考资料:仅用于个人学习使用!

    java 文本字符串替换工具

    这个“java 文本字符串替换工具”提供了一种灵活的方式,不仅可以在单个文件中进行字符串替换,还可以通过批处理脚本进行自动化操作,这对于日常开发和维护工作非常有用。在实际应用中,可以根据具体需求对其进行...

    JAVA 字符串 操作

    在Java编程语言中,字符串...以上只是Java字符串操作的一小部分,实际开发中还有许多其他方法和特性,如国际化(I18N)、正则表达式等,都需要程序员灵活掌握。理解并熟练运用这些操作,能有效提高代码质量和效率。

    java完美按格式化字符串String转sql.date

    ### Java完美按格式化字符串String转sql.Date 在Java编程中,经常需要处理日期与时间相关的数据。特别是在数据库操作时,经常会遇到需要将字符串类型的日期转换为`java.sql.Date`类型的情况。本文将详细介绍如何...

    指定字符串格式.rar

    在IT领域,字符串格式化是编程中不可或缺的一部分,特别是在数据处理、日志记录、用户界面显示等方面。"指定字符串格式"通常涉及到如何按照特定规则来组织和展示文本信息。在这个主题下,我们可以深入探讨以下几个...

    java解析xml字符串

    1. **初始化XML源**:首先,将XML字符串转化为`StringReader`对象,这是为了将字符串转换为可以被SAXBuilder读取的形式。接着,使用`InputSource`封装`StringReader`,以便SAXBuilder能够正确识别并解析XML数据。 2...

    字符串长度的判断 JAVA

    在Java编程语言中,字符...理解字符串的长度判断和截取是Java编程的基础,它们在实际编程中有着广泛的应用,例如在输入验证、数据处理、格式化输出等场景。熟练掌握这些基本操作,将有助于编写出更加高效和可靠的代码。

Global site tag (gtag.js) - Google Analytics