在 Java 中从字符串的开头删除"#"符号



csv文件中的样本数据

##Troubleshooting DHCP Configuration
#Module 3: Point-to-Point Protocol (PPP)
##Configuring HDLC Encapsulation 
Hardware is HD64570

所以我想把这些行写成

#Troubleshooting DHCP Configuratin
Module 3: Point-to-Point Protocol(PPP)
#Configuring HDLC Encapsulation
Hardware is HD64570  

我写了样例代码

public class ReadCSV {
public static BufferedReader br = null;
  public static void main(String[] args) {
      ReadCSV obj = new ReadCSV();
    obj.run();
  }
  public void run() {


                String sCurrentLine;
                try {
                    br = new BufferedReader(new FileReader("D:\compare\Genre_Subgenre.csv"));
                    try {
                        while ((sCurrentLine = br.readLine()) != null) {
                            if(sCurrentLine.charAt(0) == '#'){
                            System.out.println(sCurrentLine);
                            }
                        }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


 }
}

我正在得到低于错误

## DHCP配置故障处理模块3:点对点协议(PPP)配置HDLC封装java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0在以。charAt(未知来源)example.ReadCSV.main (ReadCSV.java: 19)

请告诉我该怎么做?

步骤:

  1. 逐行读取CSV文件
  2. 使用line.replaceFirst("#", "")删除每一行的第一个#
  3. 将修改后的行写入输出流(文件或字符串),这适合您

如果变量s包含CSV文件的内容为String

s = s.replace("##", "#");

将所有出现的"##"替换为"#"

你需要String line=buffer.readLine()

检查line.charAt(0)=='#'

行的第一个字符

获取String newLine=line.substring(1)

的新字符串

这是一个相当微不足道的问题。我不会为你做这些工作,而是概述你需要采取的步骤,而不给你答案。

  1. 逐行读取文件
  2. 取第一行,检查该行的第一个字符是否为# -如果是,创建该行的子字符串,不包括第一个字符(或使用fileLine.replaceFirst("#", "");)
  3. 将这一行存储在数组中,或者简单地将当前变量替换为编辑后的变量(fileLine = fileLine.replaceFirst("#", "");)
  4. 重复,直到文件中没有行。
  5. 如果你想在文件中添加这些更改,只需用新行覆盖旧文件(例如使用蒸汽阅读器并将第二个参数设置为false将覆盖)

尝试一下,告诉我们你做了什么,如果人们相信你自己已经彻底尝试过了,他们更有可能帮助你。

package stackoverflow.q_25054783;
import java.util.Arrays;
public class RemoveHash {
    public static void main(String[] args) {
        String [] strArray = new String [3];
        strArray[0] = "##Troubleshooting DHCP Configuration";
        strArray[1] = "#Module 3: Point-to-Point Protocol (PPP)";
        strArray[2] = "##Configuring HDLC Encapsulation"; 
        System.out.println("Original array: " + Arrays.toString(strArray));
        for (int i = 0; i < strArray.length; i++) {
            strArray[i] = strArray[i].replaceFirst("#", ""); 
        }
        System.out.println("Updated array: " + Arrays.toString(strArray));
    }
}
//Output:
//Original array: [##Troubleshooting DHCP Configuration, #Module 3: Point-to-Point Protocol (PPP), ##Configuring HDLC Encapsulation]
//Updated array: [#Troubleshooting DHCP Configuration, Module 3: Point-to-Point Protocol (PPP), #Configuring HDLC Encapsulation]

OpenCSV逐行读取CSV文件并为您提供字符串数组,其中每个字符串是一个逗号分隔的值,对吗?因此,您正在操作一个字符串。

你想从字符串的开头删除'#'符号(如果它在那里)。正确吗?

那么应该这样做:

CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
    if (nextLine[0].charAt(0) == '#') {
        nextLine[0] = nextLine[0].substring(1, nextLine[0].length());
    }
}

替换CSV文件中每一行的第一个"#"符号。

private List<String> getFileContentWithoutFirstChar(File f){
    try (BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(f), Charset.forName("UTF-8")))){
        List<String> lines = new ArrayList<String>();
        for(String line = input.readLine(); line != null; line = input.readLine()) {
            lines.add(line.substring(1));
        }
        return lines
    } catch(IOException e) {
        e.printStackTrace();
        System.exit(1);
        return null;
    }
}
private void writeFile(List<String> lines, File f){
    try(BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), StandardCharsets.UTF_8))){
        for(String line : lines){
            bw.write(content);
        }
        bw.flush();
    }catch (Exception e) {
        e.printStackTrace();
    }
}
main(){
    File f = new File("file/path");
    List<Stirng> lines = getFileContent(f);
    f.delete();
    writeFile(lines, f);
}

相关内容

  • 没有找到相关文章

最新更新