Java 如何将字符串转义为十进制格式

Java 如何将字符串转义为十进制格式,java,Java,我可以知道如何将字符串转义为十进制格式吗 // currencySymbolPrefix can be any string. NumberFormat numberFormat = new DecimalFormat(currencySymbolPrefix + "#,##0.00"); 如何转义currencySymbolPrefix,使其可能包含包括“#”在内的任何字符,并且不会被解释为模式之一 请不要建议 NumberFormat numberFormat = new DecimalF

我可以知道如何将字符串转义为十进制格式吗

// currencySymbolPrefix can be any string.
NumberFormat numberFormat = new DecimalFormat(currencySymbolPrefix + "#,##0.00");
如何转义
currencySymbolPrefix
,使其可能包含包括“#”在内的任何字符,并且不会被解释为模式之一

请不要建议

NumberFormat numberFormat = new DecimalFormat("#,##0.00");
final String output = currencySymbolPrefix + numberFormat.format(number);

由于我的供应商的方法只接受单个数字格式。

您可以使用撇号来引用:

String pattern = "'" + currencySymbolPrefix + "'#,##0.00";
NumberFormat numberFormat = new DecimalFormat(pattern);
如果
currencySymbolPrefix
本身可能包含撇号,则需要通过将它们加倍来避开它们:

String pattern = "'" + currencySymbolPrefix.replace("'", "''") + "'#,##0.00";

根据需要,您可以使用unicode。

在引用特殊字符时按字面意思处理它们 允许您引用特殊字符以逐字处理它们

模式中的许多字符都是按字面理解的;它们在解析期间匹配,在格式化期间输出不变。另一方面,特殊字符代表其他字符、字符串或字符类。除非另有说明,否则如果它们以文字形式出现在前缀或后缀中,则必须引用它们

可用于引用前缀或后缀中的特殊字符,例如,
“#”#“
格式
123
“#123”
。要创建一个单引号,请使用两个引号:
“#o''clock”

因此,您可以为
DecimalFormat
编写一个通用字符串转义器,如下所示:

// a general-purpose string escaper for DecimalFormat

public static String escapeDecimalFormat(String s) {
    return "'" + s.replace("'", "''") + "'";
}
    String currencySymbolPrefix = "<'#'>";
    NumberFormat numberFormat = new DecimalFormat(
        escapeDecimalFormat(currencySymbolPrefix) + "#,##0.00"
    );  
    System.out.println(numberFormat.format(123456.789));
    // <'#'>123,456.79
然后您可以在您的案例中使用它,如下所示:

// a general-purpose string escaper for DecimalFormat

public static String escapeDecimalFormat(String s) {
    return "'" + s.replace("'", "''") + "'";
}
    String currencySymbolPrefix = "<'#'>";
    NumberFormat numberFormat = new DecimalFormat(
        escapeDecimalFormat(currencySymbolPrefix) + "#,##0.00"
    );  
    System.out.println(numberFormat.format(123456.789));
    // <'#'>123,456.79

我不太明白你的意思。你能提供一个如何实现的例子吗?关于在DecimalFormat中插入货币符号-我的用户不希望从系统中建议货币符号。他们想自己具体化。在引用特殊字符时,按字面意思对待他们——“因此,如果您的货币符号中没有引号,您可以使用:”,那么,我必须回到Jon Skeet的建议上来吗?@Yan:如果您愿意,您可以称之为他的建议,但实际上这正是文档中所说的。使用单引号转义任何特殊字符。将其加倍以获得单个报价。