首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用逗号拆分文本,但忽略字符串中的任何字符

使用逗号拆分文本,但忽略字符串中的任何字符
EN

Stack Overflow用户
提问于 2021-10-06 13:50:27
回答 1查看 236关注 0票数 1

我有一个奇怪的情况,我需要拆分一个文本如下使用(,),但必须忽略逗号内的字符串。我使用regex模式,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)实现了它

现在的问题是我的文本包含字符串,但也包含一个单独的双引号(")。我不能更改文本,因为这些数据是由某些数据引擎生成的。

这是我的短信,需要分拆-

355,170102,204500,204509,10,“一些文本10”,"COM","COM",“未拆分”

请注意,在"SOME TEXT 10""中有一个额外的双引号,它不是成对的。因为这种拆分不适用于这种类型的文本。

我预计结果如下-

代码语言:javascript
复制
355
170102
204500
204509
10
"SOME TEXT 10"
"COM"
"COM"
"Not Split"

但结果是-

代码语言:javascript
复制
355,170102,204500,204509,10,"SOME TEXT 10""
"COM"
"COM"
"Not Split"

这是怎么弄到的?任何线索都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-10 13:59:23

如果要将正则表达式更改为:

代码语言:javascript
复制
,(?=(?:[^"]*"[^"]*""?)*[^"]*$)

它在字符串的结束双引号之后添加和附加的可选的",那么您将得到以下拆分:

代码语言:javascript
复制
355
170102
204500
204509
10
"SOME TEXT 10""
"COM"
"COM"
"Not Split"

问题是"SOME TEXT 10""字符串,您可能可以使用该字符串。但是,如果您进一步修改regex以:

代码语言:javascript
复制
(?<=^[^"]*"[^"]*")",|,(?=(?:[^"]*"[^"]*""?)*[^"]*$)

",上,当它前面是输入和输出的第一个引号字符串时,它也会被拆分:

代码语言:javascript
复制
355
170102
204500
204509
10
"SOME TEXT 10"
"COM"
"COM"
"Not Split"

见C#演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69467030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档