我在java 8中遇到了以下问题
import java.util.*;
import java.text.*;
import java.lang.*;
class NumberTest5 {
public static void main(String[] args) {
Locale loc = new Locale("sr","ME");
DecimalFormat df = (DecimalFormat)NumberFormat.getCurrencyInstance(loc);
System.out.println("\n"+"currencySymbol:"+df.getPositivePrefix()+"\tlength:"+df.getPositivePrefix().length());
//here the above result is currencySymbol: €+(non breakable space char)
//length:2
}
}
真正的问题是为什么货币符号附加了额外的字符..?
为什么上述程序以这种方式行事......?。
它的问题是什么?如何纠正它??
谢谢
答案 0 :(得分:6)
它无效。
以下
Locale loc = new Locale("sr","ME");
代表黑山塞尔维亚人的Locale
。我找不到Java的等价物,但是here是glibc的这个语言环境的描述。在货币下,您会注意到Space separation between symbol and value
设置为1
,表示
空格将符号与值
分开
因此,如果您格式化了值,例如
System.out.println(df.format(123.45));
你得到
€ 123,45
货币符号与值之间的空格。
正面上缀代表的内容。
答案 1 :(得分:0)
getPositivePrefix()方法将返回带有货币符号和空格字符的字符串 - 它们执行此操作以使货币符号和值分开。
你不想要太空人物吗? 你可以做两件事:
String symbol = df.getDecimalFormatSymbols().getCurrencySymbol();
System.out.println("\n"+"currencySymbol:"+ symbol + "500\tlength:"+symbol.length());
输出:
currencySymbol:€500 length:1
添加退格转义序列:' \ b',这将删除打印期间的空格。但是在调用length()方法
时,字符串长度大小将保留String symbol = df.getPositivePrefix();
System.out.println("\n"+"currencySymbol:" + symbol +"\b500\tlength:"+symbol.length());
输出:
currencySymbol:€500 length:2