我试图将String
数组的一部分写入String
,但我只是遇到了问题。
线的价值的处理总是如下:" status.test.status.close.name = Closed
"。
此值的唯一静态是" status
。"和" .name
"。我只是希望得到" status
之间的部分。"和" .name
"。使用下面的代码,我得到了这个结果:" status.test.status.close
"。我现在的问题是,是否可以删除array
的部分内容,例如:technicalNames.delete["status."];
?或者是否有人有另外一个提示如何实现它?
public void setTechnicalName(File javaFile) throws IOException {
if(javaFile.exists()) {
BufferedReader reader = new BufferedReader(new FileReader(javaFile));
String line = null;
while((line = reader.readLine()) != null)
if (line.contains("In approval") || line.contains("In Approval") || line.contains("In review") || line.contains("In Review") || line.contains("Closed")){
System.out.println(line);
String[] technicalNames = line.split(".name");
String technicalName = technicalNames[0];
System.out.println(technicalName);
}
reader.close();
}
}
这是我读出的.xml文件:
status.test.status.close.name = Closed
status.test.status.in.approval.name = In approval
status.test.status.in.review.name = In review
test.field.approver1 = Approver
test.field.lookupworkflow =
test.field.temp = temp
提前致谢!
答案 0 :(得分:1)
我假设您对status
和.name
之间的部分感兴趣。您可以尝试这种方式。
public static void setTechnicalName(File javaFile) throws IOException {
if(javaFile.exists()) {
BufferedReader reader = new BufferedReader(new FileReader(javaFile));
String line = null;
int statusOffet = "status.".length();
while((line = reader.readLine()) != null){
int indexOfStatus = line.indexOf("status");
int indexOfName = line.lastIndexOf(".name");
boolean isReqLine = line.contains("In approval")
|| line.contains("In Approval")
|| line.contains("In review")
|| line.contains("In Review")
|| line.contains("Closed");
if(isReqLine && indexOfStatus != -1 && indexOfName != -1){
System.out.println(line);
String stage = line.substring(indexOfStatus + statusOffet, indexOfName);
System.out.println(stage);
}
}
reader.close();
}
}
编辑:根据匹配格式的评论,我在计算偏移量时使用了"."
并使用了indexOf
答案 1 :(得分:0)
嗯,您已经定义了两次状态。因此,假设您指的是第一个状态,并且所需的结果是打印出test.status.close
,如果您知道索引0和n-1不感兴趣,则可以执行此操作:
StringBuilder builder = new StringBuilder();
String[] parts = line.split(".name")[0].split("\\.");
for(int i = 1; i < parts.length - 1; i++){
builder.append(parts[i]);
if(i < parts.length - 1){
builder.append(".");
}
System.out.println(builder.toString())
答案 2 :(得分:0)
如果要将给定的行拆分为多个部分,可以将其与
类似final String string = "status.test.status.close.name = Closed";
final String[] split = string.substring(0, string.indexOf("=")).split("\\.");
System.out.println("split = [" + split[0] + ", " + split[1] + ", " + split[2] + ", " + split[3] + ", " + split[4] + "]"); // split = [status, test, status, close, name ]
然后从split
中选择适当的值。