删除字符串中的选项卡

时间:2013-03-31 17:21:19

标签: java string tabs formatting

我需要格式化String

"public class geo {
    public static void main(String[] args) {
        if (true) {
           System.out.print("Yes");
            if (false) {
                System.out.prinln("DSadaDSa");
                x = 4;
                blahblah();
            }
        }
    }
}"

获取之间的所有内容:

"public class geo {
    public static void main(String[] args) {

    }
}"

所以在这个例子中我想要的字符串是:

"if (true) {
    System.out.print("Yes");
    if (false) {
        System.out.prinln("DSadaDSa");
        x = 4;
        blahblah();
    }
}"

目前我通过使用空字符串替换我不想要的字符序列来做一些混乱的方式,但是我最后留下的String

    "if (true) {
        System.out.print("Yes");
        if (false) {
            System.out.prinln("DSadaDSa");
            x = 4;
            blahblah();
        }
    }"

仍然在每一行都有前导标签。

是否有一种简单的方法可以删除这些标签,以便String有效地向左移动一个标签宽度?

2 个答案:

答案 0 :(得分:2)

您熟悉String类的trim()方法吗?

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#trim()

来自文档:

  

...返回字符串的副本,省略前导和尾随空格......

我相信这对你的情况很有用。你可以建立在雅各布写的东西上,但不是做lines[i]=lines[i].substring(/*...*/);而是做lines[i] = lines[i].trim();

答案 1 :(得分:1)

试试这个:

String s=what you already have;

//split the string into lines
String[] lines=s.split("\n");

//cut off the beginning of each one
for(int i=0;i<lines.length;i++)
    lines[i]=lines[i].substring(/*1, 2, 4, or 8 depending on tab formatting*/);
return s;