如何在搜索特定名称时对一行进行子串?

时间:2014-03-14 03:29:26

标签: java string split substring

在我的代码中,我必须打印包名称和类名称,其中行找到“package”和“class”。 如果索引已知,我知道如何子串/拆分。 在我的情况下,包名称和类名称将在不同的文件中更改,所以有点混淆如何做到这一点。 例如:

package com.sify;import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class WriteJava{

}
public class WriteJava2{

}

输出应该是;

包名:com.sify 类名:WriteJava 类名:WriteJava2

任何帮助都很明显。

先谢谢。

稍微修改了我的代码。 如果在“package com.sify”之后还有其他一行呢?如代码中所示。 我将如何对额外的导入部分进行子串。

1 个答案:

答案 0 :(得分:1)

使用String.indexOf(String)方法查找"包的第一个位置"和"班"字符串就行了。然后从该位置的末尾获取子串到第一个分号。像这样:

String line;
while ((line = readLine()) != null) {
    String packageName = null, className = null;
    int indexOfPackage = line.indexOf("package");
    int indexOfClass = line.indexOf("class");
    int indexOfBrace = line.indexOf('{');
    int indexOfSemiColon = line.indexOf(';');
    int classStringLength = "class ".length();
    int packageStringLength = "package ".length();
    if (indexOfPackage != -1) {
        packageName = line.substring(indexOfPackage + packageStringLength, indexOfSemiColon);
    }
    if (indexOfClass != -1) {
        className = line.substring(indexOfClass + classStringLength, indexOfBrace);
    }

    System.out.println("Package Name: " + packageName + " ");
    System.out.print("Class Name: " + className + " ");
}