是否可以将一些StringArray值写入一个String?

时间:2014-12-01 07:33:21

标签: java arrays string

我试图将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

提前致谢!

3 个答案:

答案 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中选择适当的值。