diff --git a/hutool-poi/src/main/java/org/dromara/hutool/poi/csv/CsvParser.java b/hutool-poi/src/main/java/org/dromara/hutool/poi/csv/CsvParser.java index d1d5e597b..db8327a0f 100644 --- a/hutool-poi/src/main/java/org/dromara/hutool/poi/csv/CsvParser.java +++ b/hutool-poi/src/main/java/org/dromara/hutool/poi/csv/CsvParser.java @@ -260,7 +260,8 @@ public final class CsvParser extends ComputeIter implements Closeable, S if(preChar < 0 || preChar == CharUtil.CR || preChar == CharUtil.LF){ // 判断行首字符为指定注释字符的注释开始,直到遇到换行符 // 行首分两种,1是preChar < 0表示文本开始,2是换行符后紧跟就是下一行的开始 - if(null != this.config.commentCharacter && c == this.config.commentCharacter){ + // issue#IA8WE0 如果注释符出现在包装符内,被认为是普通字符 + if(!inQuotes && null != this.config.commentCharacter && c == this.config.commentCharacter){ inComment = true; } } diff --git a/hutool-poi/src/test/java/org/dromara/hutool/poi/csv/IssueIA8WE0Test.java b/hutool-poi/src/test/java/org/dromara/hutool/poi/csv/IssueIA8WE0Test.java new file mode 100644 index 000000000..d727d7da7 --- /dev/null +++ b/hutool-poi/src/test/java/org/dromara/hutool/poi/csv/IssueIA8WE0Test.java @@ -0,0 +1,29 @@ +package org.dromara.hutool.poi.csv; + +import org.dromara.hutool.core.io.file.FileUtil; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +/** + * https://gitee.com/dromara/hutool/issues/IA8WE0 + */ +public class IssueIA8WE0Test { + @Test + void csvReadTest() { + final CsvReader csvReader = new CsvReader(); + final CsvData read = csvReader.read(FileUtil.file("issueIA8WE0.csv")); + final List rows = read.getRows(); + + assertEquals(1, rows.size()); + assertEquals(3, rows.get(0).size()); + assertEquals("c1_text1", rows.get(0).get(0)); + // 如果\n#出现在双引号中,表示实际的文本内容,并不算注释 + assertEquals("c1_text2\n#c1_text2_line2", rows.get(0).get(1)); + assertEquals("c1_text3", rows.get(0).get(2)); + + csvReader.close(); + } +} diff --git a/hutool-poi/src/test/resources/issueIA8WE0.csv b/hutool-poi/src/test/resources/issueIA8WE0.csv new file mode 100644 index 000000000..92b21f397 --- /dev/null +++ b/hutool-poi/src/test/resources/issueIA8WE0.csv @@ -0,0 +1,2 @@ +c1_text1,"c1_text2 +#c1_text2_line2",c1_text3