在:
EUTQQGOPED
在:
EUT-QQG-OPED
以下示例是我提出的将“ - ”添加到10个字符的字符串作为可读性要求的一部分。格式化模式类似于美国社会安全号码的格式。
是否有更简单,更简洁的方法来完成其他格式?
public static void main(String[] args){
String pin = "EUTQQGOPED";
StringBuilder formattedPIN = new StringBuilder(pin);
formattedPIN = formattedPIN.insert(3, '-').insert(7, '-');
//output is EUT-QQG-OPED
println formattedPIN
}
答案 0 :(得分:7)
我认为你所做的是最好的方法,但你可以通过简单地插入所有内容来使它变得更优雅,如下所示:
public static void main(String[] args) {
println new StringBuilder("EUTQQGOPED").insert(6, '-').insert(3, '-');
}
由于StringBuilder提供fluent interface(允许方法链接),因此可以使用这种内联。
还要注意插入的转置,因为您使用它们的顺序意味着第一个插入会影响第二个插入的参数。通过命名它们最大的第一意味着它们基本上彼此独立。
而且总是...... “少代码==好”(只要它仍然可读,在这种情况下,它是恕我直言更多可读)
答案 1 :(得分:5)
可以使用正则表达式,它会更清楚你正在做什么,但问题不是那么有效。
String formattedPin = pin.replaceAll("(.{3})(.{3})(.{4})", "$1-$2-$3")
System.out.println(formattedPin);
答案 2 :(得分:3)
为简单起见,我会选择:
def pin = "EUTQQGOPED"
def formatted = [pin[0..2], pin[3..5], pin[6..-1]].join('-')
为简洁起见,这可能是一个黑客攻击,但它很短(而且我觉得它也很可读):
def formatted = "-$pin"[1..3, 0, 4..6, 0, 7..10]
答案 3 :(得分:2)
这些是Groovy为您提供的几个选项。在这种情况下,它们不一定非常容易阅读,但它们很好而且很短。
def pin = "EUTQQGOPED"
// Option 1
def formatted1 = "${pin[0..2]}-${pin[3..5]}-${pin[6..-1]}"
println formatted1
// Option 2
def pt1 = pin[0..2]
def pt2 = pin[3..5]
def pt3 = pin[6..-1]
def formatted2 = pt1 << "-" << pt2 << "-" << pt3
println formatted2
答案 4 :(得分:2)
虽然我喜欢String.format选项,但我觉得分手看起来更加丑陋。
String pin = "EUTQQGOPED";
System.out.println(String.format("%s-%s-%s", pin.substring(0, 3), pin.substring(3,6), pin.substring(6)));