Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 格式化字符串的最干净方法_Java - Fatal编程技术网

Java 格式化字符串的最干净方法

Java 格式化字符串的最干净方法,java,Java,我正在尝试设置一个电话号码的格式,该号码存储在数据库中,没有设置格式。 现在我只使用substring和String concatation来形成格式化的字符串,但我正在寻找一种更干净/更快/内存占用更少的方法。(我不是说只使用StringBuilder) 我查看了String.format,但它只需要一个参数列表(如中所示),而不是一个字符数组。如果您想从字符数组中加上它们之间的一些东西(字符、字符串等)构建一个字符串,那么StringBuilder绝对是正确的方法,如果您不想简单地连接起来的

我正在尝试设置一个电话号码的格式,该号码存储在数据库中,没有设置格式。 现在我只使用substring和String concatation来形成格式化的字符串,但我正在寻找一种更干净/更快/内存占用更少的方法。(我不是说只使用StringBuilder)


我查看了String.format,但它只需要一个参数列表(如中所示),而不是一个字符数组。

如果您想从字符数组中加上它们之间的一些东西(字符、字符串等)构建一个
字符串,那么
StringBuilder
绝对是正确的方法,如果您不想简单地连接起来的话。重要的一点是用足够的初始容量初始化构建器,这样它就不需要在构建时重新分配其内部结构。

在查找之后,我将投入2美分:

import java.swing.text.MaskFormater;

try {
    MaskFormatter formatter = new MaskFormatter("+AA AAA AA AA AA");
    formatter.setValueContainsLiteralCharacters(false);
    System.err.println(formatter.valueToString("31987365414"));
} catch (ParseException e) {

}

这是你程序中的瓶颈吗?我闻到一些过早优化的味道。Ten bucks说分析器将指向程序中的其他地方。我要说,字符串操作在资源方面与数据库访问相比微不足道。Thanatos:不,不是这样,但与其说是缓慢/资源优化,不如说是我喜欢学习更干净的做事方式。实际上我有一个字符串(比如31987365414)我需要格式化它,使它类似于:+31987365414。这就是为什么我希望有一种方法可以清晰地格式化它。我刚刚看到swing有一个maskformatter,但是这个类似乎不能完全在我的pc上工作(或者它只需要重新启动)。如果你没有
maskformatter
,那么我希望你使用的是一个古老的JavaSE,或者JavaMe或者Android之类的。该类自1.4以来一直使用Java SE。我有这个类,我的编译器刚刚在它上崩溃,但重新启动修复了它。这比使用StringBuilder更简单,但如果它更快或更少占用内存,我会吃我的帽子:-)真的,StringBuilder可能会稍微快一点,特别是因为MaskFormatter在屏幕后面也使用StringBuffer,并且包含更多的逻辑。但是MaskFormatter比StringBuilder更易于维护/更改。特别是如果我将掩码放在属性文件中。因此,MaskFormat还提供了更大的灵活性。此外,真正的减速发生在应用程序的其他地方。