0

我需要格式化这个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有效地将它们向左移动一个选项卡宽度?

4

2 回答 2

2

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

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

从文档:

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

我相信这将适用于您的情况。您可以建立在 Jakob 所写的基础上,而不是lines[i]=lines[i].substring(/*...*/);简单地做lines[i] = lines[i].trim();

于 2013-03-31T18:24:19.533 回答
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;
于 2013-03-31T17:24:48.327 回答