在Java中动态缩进字符串

时间:2018-11-29 18:52:39

标签: java string

下午好朋友!

我对动态缩进字符串有疑问。

我有一个会计科目表,例如:

  • 3.01.01-帐户名
  • 3.01.01.01-帐户名
  • 3.01.01.01.001010-帐户名
  • 3.01.01.03-帐户名
  • 3.01.01.03.0003-帐户名

我想根据您的“级别”缩进(在点中打断字符串)

示例:3.01.01 = 3个级别 3.01.01.01 = 4个水平

我希望您插入X选项卡(x =级别),有关如何执行此操作的任何建议?

预期结果:

  • ... 3.01.01-帐户名
  • .... 3.01.01.01-帐户名
  • ..... 3.01.01.01.001010-帐户名
  • .... 3.01.01.03-帐户名
  • ..... 3.01.01.03.0003-帐户名

1 个答案:

答案 0 :(得分:1)

可以使用正则表达式轻松完成,就像这样:

String indent = num.replaceAll("[^.]+\\.?", "\t");

演示(使用.而不是制表符来显示缩进):

public static void main(String[] args) {
    print("3.01.01", "ACCOUNT NAME");
    print("3.01.01.01", "ACCOUNT NAME");
    print("3.01.01.01.0010", "ACCOUNT NAME");
    print("3.01.01.03", "ACCOUNT NAME");
    print("3.01.01.03.0003", "ACCOUNT NAME");
}
public static void print(String num, String name) {
    String indent = num.replaceAll("[^.]+\\.?", ".");
    System.out.println(indent + num + " - " + name);
}

输出

...3.01.01 - ACCOUNT NAME
....3.01.01.01 - ACCOUNT NAME
.....3.01.01.01.0010 - ACCOUNT NAME
....3.01.01.03 - ACCOUNT NAME
.....3.01.01.03.0003 - ACCOUNT NAME