给定示例的Java正则表达式帮助[关闭]

问题描述 投票:-3回答:3

我需要以下示例的Java代码帮助。

示例文件如下所示。我的要求是,如果行以PR开头,然后在行的末尾附加XYZ。

输入文件内容-

PA; AB; 2020; 1; 2

PR; DD; 2020; 3; 4

PB; AB; 2020; 5; 6

PR; DD; 2020; 7; 2

输出文件内容-

PA; AB; 2020; 1; 2

PR; DD; 2020; 3; 4XYZ

PB; AB; 2020; 5; 6

PR; DD; 2020; 7; 2XYZ

可以使用正则表达式和替换功能来实现。

请以任何方式帮助我解决问题。

问候

java regex string replaceall
3个回答
0
投票

不需要正则表达式。您可以只检查字符串的前两个字符是否为“ PR”,如果是,则在其末尾附加“ XYZ”:

  public static void main(String[] args) {
    String[] arr = { "PA;AB;2020;1;2", "PR;DD;2020;3;4", "PB;AB;2020;5;6", "PR;DD;2020;7;2" };
    arr = checkAndAppendValues(arr);
    System.out.println(Arrays.toString(arr));
  }

  public static String[] checkAndAppendValues(String[] arr) {
    for(int i = 0; i < arr.length; i++) {
      if(arr[i].substring(0,2).equalsIgnoreCase("PR")) {
        arr[i] = arr[i] + "XYZ";
      }
    }
    return arr;
  }

输出:

[PA;AB;2020;1;2, PR;DD;2020;3;4XYZ, PB;AB;2020;5;6, PR;DD;2020;7;2XYZ]

希望对您有帮助:)


0
投票
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.read.file;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 *
 * @author wilso
 */
public class Files {

    public static void main(String[] args) throws FileNotFoundException, IOException {
        File file = new File("C:\\Users\\wilso\\Downloads/system.txt");
        StringBuilder stringBuilder = new StringBuilder();
        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(file))) {
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                if (line.startsWith("PR")) {
                    line = line + "XYZ";
                }
                stringBuilder.append(line);
                stringBuilder.append("\r\n");
            }
        }
        System.out.println(stringBuilder.toString());
    }
}

结果是下一个

cd C:\ Users \ wilso \ OneDrive \ Documents \ NetBeansProjectsF \ OverFlow; “ JAVA_HOME = C:\ Program Files \ Java \ jdk1.8.0_91” cmd / c“ \” \“ C:\ Program Files \ NetBeans 8.0.2 \ java \ maven \ bin \ mvn.bat \” -Dexec.args = \“-classpath%classpath com.read.file.Files \” -Dexec.executable = \“ C:\ Program Files \ Java \ jdk1.8.0_91 \ bin \ java.exe \” -Dexec.classpathScope =运行时- Dmaven.ext.class.path = \“ C:\ Program Files \ NetBeans 8.0.2 \ java \ maven-nblib \ netbeans-eventspy.jar \” -Dfile.encoding = UTF-8 org.codehaus.mojo:exec- maven插件:1.2.1:exec \“”运行NetBeans保存时编译执行。跳过阶段执行,并且将使用依赖项项目的输出目录(启用“保存时编译”)代替其jar工件。扫描项目...


Building Overflow 1.0-SNAPSHOT

--- exec-maven-plugin:1.2.1:exec(default-cli)@ Overflow ---PA; AB; 2020; 1; 2PR; DD; 2020; 3; 4XYZPB; AB; 2020; 5; 6PR; DD; 2020; 7; 2XYZ


成功完成

总时间:0.715秒结束于:COT 2020年1月30日星期四13:02:55

最终内存:6M / 245M


0
投票

为什么不能只为每行做一个

line = line.replaceAll("^(PR.*)$","$1XYZ");


0
投票

为什么不能只为每行做一个

line = line.replaceAll("^(PR.*)$","$1XYZ");

© www.soinside.com 2019 - 2024. All rights reserved.