c# - 使用逗号分割文本,但忽略字符串中的任何字符
问题描述
我有一个奇怪的情况,我需要使用分隔符拆分如下文本,(,)
但必须忽略字符串中的逗号。我已经使用正则表达式模式实现了它,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)
现在的问题是我的文本包含字符串但也包含一个单独的双引号(")
。我无法更改文本,因为此数据是由某些数据引擎生成的。
这是我需要拆分的文本-
355,170102,204500,204509,10,"SOME TEXT 10"","COM","COM","未拆分"
请注意,有一个额外的双引号"SOME TEXT 10""
不是成对的。由于此拆分不适用于此类文本。
我期待结果如下 -
355
170102
204500
204509
10
"SOME TEXT 10"
"COM"
"COM"
"Not Split"
但得到的结果是-
355,170102,204500,204509,10,"SOME TEXT 10""
"COM"
"COM"
"Not Split"
如何实现这一目标?任何线索将不胜感激。
解决方案
如果您要将正则表达式更改为:
,(?=(?:[^"]*"[^"]*""?)*[^"]*$)
在字符串的右双引号之后添加和附加的可选"
,那么您最终会得到以下拆分:
355
170102
204500
204509
10
"SOME TEXT 10""
"COM"
"COM"
"Not Split"
问题是"SOME TEXT 10""
字符串,你可能可以忍受。但是,如果您进一步将正则表达式修改为:
(?<=^[^"]*"[^"]*")",|,(?=(?:[^"]*"[^"]*""?)*[^"]*$)
",
当它前面是输入和产量的第一个带引号的字符串时,它也会拆分:
355
170102
204500
204509
10
"SOME TEXT 10"
"COM"
"COM"
"Not Split"
推荐阅读
- postgresql - Postgres全文忽略xml标签
- react-native - 如何在 iOS13 上修复 React Native 的企业应用分发?
- serialization - 为什么不使用 avro 默认值?(使用 avro-python)
- c++ - 模板类定义中的模板方法与声明不匹配
- flutter - Dart 有没有办法获取 HTTPS 内容?
- angular - 如何在不刷新页面的情况下更新视图中显示的数据?
- regex - 多行的 Perl 正则表达式
- java - 在 Spring Boot 应用程序的应用程序属性文件中使用 Jenkins 变量
- java - Java的TTS(文本到语音)API的最佳替代品是什么?
- rabbitmq - 是否可以在 RabbitMQ 中将不同类型的交换绑定在一起?