删除'#' java中字符串开头的符号

时间:2014-07-31 09:00:04

标签: java opencsv

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配置故障排除  #Module 3:点对点协议(PPP)  ##配置HDLC封装  线程" main"中的例外情况java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0  在java.lang.String.charAt(未知来源)  在example.ReadCSV.main(ReadCSV.java:19)

请建议我怎么做?

7 个答案:

答案 0 :(得分:1)

步骤:

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

答案 1 :(得分:0)

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

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

将用'#'

替换'##'的所有副本

答案 2 :(得分:0)

您需要String line=buffer.readLine()

之类的内容

使用line.charAt(0)=='#'

检查该行的第一个字符

使用String newLine=line.substring(1)

获取新字符串

答案 3 :(得分:0)

这是一个相当微不足道的问题。我将概述您需要采取的步骤,而不是为您提供帮助。

  1. 逐行读入文件
  2. 取第一行并检查此行的第一个字符是否为# - 如果是,则创建此行的子字符串,不包括第一个字符(或使用fileLine.replaceFirst("#", "");
  3. 将此行存储在数组结构中的某个位置,或者只是将当前变量替换为已编辑的变量(fileLine = fileLine.replaceFirst("#", "");
  4. 重复,直到文件中不再有任何行。
  5. 如果要将这些更改添加到文件中,只需使用新行覆盖旧文件(例如,使用蒸汽阅读器并将第二个参数设置为false将覆盖)
  6. 尝试并向我们展示您尝试过的内容,如果他们认为您已经彻底尝试过问题,那么他们将更有可能提供帮助。

答案 4 :(得分:0)

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]

答案 5 :(得分:0)

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

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

然后这应该这样做:

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());
    }
}

取代第一个&#39;#&#39; CSV文件中每一行的符号。

答案 6 :(得分:0)

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);
}