Java 格式化字符串的最干净方法
我正在尝试设置一个电话号码的格式,该号码存储在数据库中,没有设置格式。 现在我只使用substring和String concatation来形成格式化的字符串,但我正在寻找一种更干净/更快/内存占用更少的方法。(我不是说只使用StringBuilder)Java 格式化字符串的最干净方法,java,Java,我正在尝试设置一个电话号码的格式,该号码存储在数据库中,没有设置格式。 现在我只使用substring和String concatation来形成格式化的字符串,但我正在寻找一种更干净/更快/内存占用更少的方法。(我不是说只使用StringBuilder) 我查看了String.format,但它只需要一个参数列表(如中所示),而不是一个字符数组。如果您想从字符数组中加上它们之间的一些东西(字符、字符串等)构建一个字符串,那么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还提供了更大的灵活性。此外,真正的减速发生在应用程序的其他地方。