首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java中将一个长整数格式化为不带分隔符的字符串?

如何在Java中将一个长整数格式化为不带分隔符的字符串?
EN

Stack Overflow用户
提问于 2009-12-22 03:32:39
回答 6查看 59.9K关注 0票数 136

问题很简单,但我敢打赌,在这里提问可能比试图理解MessageFormat的文档更直接

long foo = 12345;
String s = MessageFormat.format("{0}", foo);

观察值为"12,345“。

期望值为"12345“。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-12-22 03:35:10

只需使用Long.toString(long foo)即可

票数 71
EN

Stack Overflow用户

发布于 2009-12-22 03:38:52

MessageFormat.format("{0,number,#}", foo);
票数 364
EN

Stack Overflow用户

发布于 2020-05-07 22:44:25

在尝试使用国际化等“现实世界”模式时,我遇到了一点困难。具体地说,我们需要使用一种“选择”格式,其中输出取决于所显示的值,这就是java.text.ChoiceFormat的用途。

下面是一个如何完成此操作的示例:

    MessageFormat fmt = new MessageFormat("{0,choice,0#zero!|1#one!|1<{0,number,'#'}|10000<big: {0}}");

    int[] nums = new int[] {
            0,
            1,
            100,
            1000,
            10000,
            100000,
            1000000,
            10000000
    };

    Object[] a = new Object[1];
    for(int num : nums) {
        a[0] = num;
        System.out.println(fmt.format(a));
    }

这将生成以下输出;我希望它对其他正在尝试完成相同类型的事情的人有帮助:

zero!
one!
100
1000
10000
big: 100,000
big: 1,000,000
big: 10,000,000

如您所见,"choice“格式允许我们根据传入的要格式化的值来选择要使用的格式类型。可以用文本替换较小的数字(不显示原始值)。显示中等大小的数字时不带分组分隔符(无逗号)。最大的数字也包括逗号。显然,这是一个完全人为设计的示例,用于演示java.text.MessageFormat的灵活性。

关于文本格式中引用的#的注意事项:由于同时使用了ChoiceFormatMessageFormat,因此这两个元字符之间存在冲突。ChoiceFormat使用#作为元字符,这本质上意味着“相等”,因此格式化引擎知道,例如在1#one!的情况下,我们正在比较{0}1,如果它们相等,它将使用那个特定的“选项”。

但是#MessageFormat还有另一个含义,那就是作为一个元字符,它对DecimalFormat有意义:它是一个元字符,意思是“在这里放一个数字”。

因为它被包装在ChoiceFormat字符串中,所以需要给#加上引号。当ChoiceFormat解析完字符串后,在将子格式传递给MessageFormat (然后传递给DecimalFormat)时,这些引号将被删除。

因此,当您使用{0,choice,...}时,您必须引用这些#字符,可能还包括其他字符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1942118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档