regex - 通过排除双引号内的逗号来拆分字符串
问题描述
我特别有这个字符串:
123,abc,true,true,true,false,true,false,false,false,123,"my name is : something('Jack'), email is 'abc@gmail.com' 已提供。公司政策'xyz',是有益的。",ABCD,591633,1
我想通过排除双引号内的逗号来用逗号分割字符串。所以我想在这里产生的输出是
[123, abc, true, true, true, false, true, false, false, false, 123, "my name is : something('Jack') email is 'abc@gmail.com' 已提供公司政策'xyz' 是有益的。”,ABCD,591633,1]
我曾尝试使用其他 stackoverflow 帖子的答案,但它们不适用于此类字符串。谁能帮助我如何实现这一目标?
我正在尝试在 Kotlin 中实现这一点。
我能想到的一种方法是,首先去掉双引号内的逗号,然后用逗号分割字符串,但无法得到预期的结果。
解决方案
由于您正在尝试解析CSV文件,因此使用现有库几乎总是比编写自己的代码要好得多。优点包括:
- 它可以处理您没有时间了解或支持的所有极端情况和微妙之处。例如,如果双引号字符本身被引用会怎样?如果分隔符是分号、制表符、空格或逗号以外的东西怎么办?(是的,它仍然被称为 CSV,令人困惑。例如,Excel 在某些以逗号作为小数分隔符的语言环境中写入分号。)标题、换行符、注释行、空白行、转义序列呢?你能处理和测试不同程序编写的所有不同的 CSV 方言吗?
- 它已经过彻底的测试,并被无数用户证明。
- 它会在标准更改、发现错误或可以提高性能时进行更新。
- 它很常用,因此其他开发人员可能熟悉它。
一个例子是 Apache Commons CSV,它是免费的、开源的,并且很容易包含在任何 Maven 或 Gradle 项目中。
推荐阅读
- apache-kafka - 如何测量kafka producer每秒产生的消息数?
- imagemagick - 打印图像与imagemagick不同的像素值?
- javascript - 将排序功能与列上的标题点击分开的正确方法是什么?
- windows-10 - SCCM - 无法将 Windows 更新推送到客户端
- regex - 如何在 Elasticsearch 中高效搜索动态定义的正则表达式?
- c# - ASP.NET 增加特定 API 调用的上传最大大小
- ruby-on-rails - 使用 Ruby eval 方法真的很危险吗?如果是,还有什么替代方法?(导轨)
- php - 单击“添加到播放列表按钮”后,从 PHP 数据库中获取特定行以添加到新的空数据库中
- session - Laravel 会话不会改变
- vue.js - 使用 vue-cli 找不到模块“./src/data”