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)
请建议我怎么做?
答案 0 :(得分:1)
步骤:
line.replaceFirst("#", "")
删除每行中的第一个#答案 1 :(得分:0)
如果变量s
包含CSV文件的内容为String
s = s.replace("##", "#");
将用'#'
替换'##'的所有副本答案 2 :(得分:0)
您需要String line=buffer.readLine()
使用line.charAt(0)=='#'
使用String newLine=line.substring(1)
答案 3 :(得分:0)
这是一个相当微不足道的问题。我将概述您需要采取的步骤,而不是为您提供帮助。
#
- 如果是,则创建此行的子字符串,不包括第一个字符(或使用fileLine.replaceFirst("#", "");
)fileLine = fileLine.replaceFirst("#", "");
)尝试并向我们展示您尝试过的内容,如果他们认为您已经彻底尝试过问题,那么他们将更有可能提供帮助。
答案 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);
}