• MessageFormat用来格式化一个消息,通常是一个字符串


    1ArgumentIndex必须是非负整数,它的个数不只限于0910个,它可以用09的数字组成,因此可以有好多个,如:

    Java代码  

     

    1. String pig = "{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}{14}{15}{16}";  
    2.   
    3. Object[] array = new Object[]{"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q"};  
    4.   
    5. String value = MessageFormat.format(message, array);  
    6.   
    7. System.out.println(value);  

    最终结果是:ABCDEFGHIJKLMNOPQ

     

    2、格式化字符串时,两个单引号才表示一个单引号,单个单引号会被省略,如:

    Java代码  

     

    1. String message = "oh, {0} is 'a' pig";  
    2.   
    3. Object[] array = new Object[]{"ZhangSan"};  
    4.   
    5. String value = MessageFormat.format(message, array);  
    6.   
    7. System.out.println(value);  

     最终结果是:oh, ZhangSan is a pig

     

    给字母a加上单引号,如:

    Java代码  

     

    1. String message = "oh, {0} is ''a'' pig";  
    2.   
    3. Object[] array = new Object[]{"ZhangSan"};  
    4.   
    5. String value = MessageFormat.format(message, array);  
    6.   
    7. System.out.println(value);  

     最终结果是:oh, ZhangSan is 'a' pig

     

    3、单引号会使某个字符或串保持原形。

         所以,假如没有特殊要求,一般都是要在正式格式化之前把单引号都去掉,否则会造成不必要的麻烦,如:

    Java代码  

     

    1. String message = "oh, '{0}' is a pig";  
    2.   
    3. Object[] array = new Object[]{"ZhangSan"};  
    4.   
    5. String value = MessageFormat.format(message, array);  
    6.   
    7. System.out.println(value);  

     最终结果是:oh, {0} is 'a' pig,此处ZhangSan无法显示。

     

     又如,使用子格式模式,多了一个单引号:

    Java代码  

     

    1. String message = "oh, '{0,number,#.#} is a pig";  
    2.   
    3. Object[] array = new Object[]{new Double(3.1415)};  
    4.   
    5. String value = MessageFormat.format(message, array);  
    6.   
    7. System.out.println(value);  

     最终结果是:oh, {0,number,#.#}  is 'a' pig

     

     如果像下面这样,就可以正确显示:

    Java代码  

     

    1. String message = "oh, {0,number,#.#} is a pig";  
    2.   
    3. Object[] array = new Object[]{new Double(3.1415)};  
    4.   
    5. String value = MessageFormat.format(message, array);  
    6.   
    7. System.out.println(value);  

     最终结果是:oh, 3.1 is a pig

     

    3、无论是有引号字符串还是无引号字符串,左花括号都是不支持的,但支持右花括号显示,如:

    Java代码  

     

    1. String message = "oh, { is a pig";  
    2.   
    3. Object[] array = new Object[]{"ZhangSan"};  
    4.   
    5. String value = MessageFormat.format(message, array);  
    6.   
    7. System.out.println(value);  

     最终结果是:异常java.lang.IllegalArgumentException: Unmatched braces in the pattern

     

    右花括号可以显示,如:

    Java代码  

     

    1. String message = "oh, } is a pig";  
    2.   
    3. Object[] array = new Object[]{"ZhangSan"};  
    4.   
    5. String value = MessageFormat.format(message, array);  
    6.   
    7. System.out.println(value);  

     最终结果是:oh, } is a pig

     

     

    关于MessageFormat.format方法:

    每调用一次MessageFormat.format方法,都会新创建MessageFormat的一个实例,相当于MessageFormat只使用了一次。MessageFormat类的format方法如下:

    Java代码  

     

    1. public static String format(String pattern, Object ... arguments)   
    2. {  
    3.     MessageFormat temp = new MessageFormat(pattern);  
    4.     return temp.format(arguments);  
    5. }  

     

    如果要重复使用某个MessageFormat实例,可以用如下方式:

    Java代码  

     

    1. String message = "oh, {0} is a pig";  
    2.   
    3. MessageFormat messageFormat = new MessageFormat(message);  
    4.   
    5. Object[] array = new Object[]{"ZhangSan"};  
    6.   
    7. String value = messageFormat.format(array);  
    8.   
    9. System.out.println(value);  

     最终结果是:oh, ZhangSan is a pig

     

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

    public static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m)

    返回指定映射的不可修改视图。此方法允许模块为用户提供对内部映射的“只读”访问。在返回的映射上执行的查询操作将“读完”指定的映射。试图修改返回的映射(不管是直接修改还是通过其 collection 视图进行修改)将导致抛出 UnsupportedOperationException。 

    如果指定映射是可序列化的,则返回的映射也将是可序列化的。 

  • 相关阅读:
    将中文字符串分割为数组 解决str_split中文乱码php
    %25%37%DD 。。。上述形式不是乱码。 这是urlencoding。 你可以使用js内置的方法 encodeURIComponent进行编码, 而使用decodeURIComponent把上述形式再解码为普通字符
    浏览器 cookie session
    javascript:void(0)与#区别
    $.each遍历json对象(java将对象转化为json格式以及将json解析为普通对象)
    HTML <meta> 标签 遇到<meta http-equiv="refresh" content="0; url=">详解
    HBuilder的默认工作空间的修改
    Spring和Mybatis的整合
    嵌套查询--------关联一对多关系----------collection
    InputStream和OutputStream的一遍博客 分析非常到位
  • 原文地址:https://www.cnblogs.com/-wyl/p/7640843.html
Copyright © 2020-2023  润新知