gpt4 book ai didi

java - 使用Regex java删除字符串中的换行符

转载 作者:行者123 更新时间:2023-11-30 06:21:14 37 4
gpt4 key购买 nike

我对 java 中的正则表达式很陌生。我有一个 csv 文件,其中某些字段中包含换行符,如下所示:

name,address,phone
tom,123 baker st,1234
jim,"234 baker st
some city",5678
james,"897 lowell st
some city, some state",78910

如果特定值包含逗号换行符,则整个值将包含在""之间。我需要删除字段中的换行符(并将其替换为单个空格),我认为使用正则表达式会更容易。

希望这会让事情变得更容易,我已经使用以下几行将整个文件读入字符串中:

String str = new String(Files.readAllBytes(Paths.get("file path")),"UTF-8");

现在我在 str 中有整个文件。所有字段均以逗号分隔。因此,字符串 str,"", 之间的任何换行符都应被删除(替换为 "").我猜我应该编写一个正则表达式来匹配此模式,然后将 newlines('\n') 替换为 ""

我的知识就到此为止,我不知道如何在我的代码中实现它。

转换后,数据应如下所示:

name,address,phone
tom,123 baker st,1234
jim,"234 baker st some city",5678
james,"897 lowell st some city, some state",78910

如有任何帮助,我们将不胜感激!谢谢。

最佳答案

读取字段后,您可以使用CSVParser解析并删除空格

CSVFormat format = CSVFormat.DEFAULT
.withRecordSeparator(',')
.withIgnoreEmptyLines()
.withQuote('"');
CSVParser parser = CSVParser.parse(new File("/file/path/csv"), Charset.defaultCharset(), format);
List<CSVRecord> recordList = parser.getRecords();
for (CSVRecord record : recordList) {
Iterator<String> it = record.iterator();
while (it.hasNext()) {
System.out.print(it.next().replace("\n", "") + "|");
}
System.out.println();
}

输出

name|address|phone|
tom|123 baker st|1234|
jim|234 baker stsome city|5678|
james|897 lowell stsome city, some state|78910|

maven依赖

    <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-csv</artifactId>
<version>1.1</version>
</dependency>

关于java - 使用Regex java删除字符串中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48107168/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com