首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字符上拆分字符串,除非双倍字符是转义字符

在字符上拆分字符串,除非双倍字符是转义字符
EN

Stack Overflow用户
提问于 2012-03-29 09:11:57
回答 2查看 219关注 0票数 2

输入:

代码语言:javascript
复制
$string = "this-is-just-an--example"

输出:

代码语言:javascript
复制
this
is
just
an-example

尝试了以Regex.Split和"-^-“或"-(^)”为中心的各种方法。不起作用的例子:

代码语言:javascript
复制
[regex]::Split( $string, "-[^-]" )
[regex]::Split( $string, "-([^-])" )

当然,我可以使用String.Split并迭代,并意识到空字符串意味着我遇到了转义字符……但这是丑陋的代码。另外,我试着搜索了几分钟,什么也没找到。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-29 09:32:40

使用前视和后视断言,然后执行替换以消除剩余的双倍字符:

代码语言:javascript
复制
$string = "this-is-just-an--example"
$string -split '(?<!-)-(?!-)' -replace '--','-'

this
is
just
an-example
票数 0
EN

Stack Overflow用户

发布于 2012-06-13 07:01:54

首先用另一个值替换转义序列,这样就不需要复杂的拆分条件。所需要的只是一个尚未出现在字符串中的唯一替换值。

例如,使用@作为$string = 'this-is-just-an--example'的替换值,以下行将获得所需的结果:

代码语言:javascript
复制
$string -replace '--','@' -split '-' -replace '@','-'

  • -replace '--','@'消除转义序列(给出代码),
  • -split '-'然后分离结果(给出一个包含thisisjustan@example的数组),
  • ,最后-replace '@','-'恢复转义值(给出this,<代码>D18,<代码>D19,

-split-replace都是内置的PowerShell运算符,它们使用正则表达式处理字符串(相当于.NET中的Regex.SplitRegex.Replace方法)。

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

https://stackoverflow.com/questions/9917873

复制
相关文章

相似问题

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