修复\n#出现在双引号中解析错误问题

This commit is contained in:
Looly 2024-07-01 15:59:49 +08:00
parent db5806f0e8
commit f4d67ede39
4 changed files with 36 additions and 2 deletions

View File

@ -2,7 +2,7 @@
# 🚀Changelog
-------------------------------------------------------------------------------------------------------------
# 5.8.29(2024-06-30)
# 5.8.29(2024-07-01)
### 🐣新特性
* 【core 】 DateUtil增加offsetYear方法
@ -27,6 +27,7 @@
* 【http 】 修复Mac下的微信浏览器被识别为移动端问题issue#IA74K2@Gitee
* 【core 】 修复Tailer指定初始读取行数的计算错误问题issue#IA77ML@Gitee
* 【http 】 修复getFileNameFromDisposition获取头错误问题issue#3632@Github
* 【core 】 修复\n#出现在双引号中解析错误问题issue#IA8WE0@Gitee
-------------------------------------------------------------------------------------------------------------
# 5.8.28(2024-05-29)

View File

@ -240,7 +240,8 @@ public final class CsvParser extends ComputeIter<CsvRow> 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((false == inQuotes) && null != this.config.commentCharacter && c == this.config.commentCharacter){
inComment = true;
}
}

View File

@ -0,0 +1,30 @@
package cn.hutool.core.text.csv;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.assertEquals;
/**
* https://gitee.com/dromara/hutool/issues/IA8WE0
*/
public class IssueIA8WE0Test {
@Test
public void csvReadTest() {
final CsvReader csvReader = new CsvReader();
final CsvData read = csvReader.read(FileUtil.file("issueIA8WE0.csv"));
final List<CsvRow> 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));
IoUtil.close(csvReader);
}
}

View File

@ -0,0 +1,2 @@
c1_text1,"c1_text2
#c1_text2_line2",c1_text3
1 c1_text1 c1_text2 #c1_text2_line2 c1_text3