在我的代码中,我必须打印包名称和类名称,其中行找到“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”之后还有其他一行呢?如代码中所示。 我将如何对额外的导入部分进行子串。
答案 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 + " ");
}