【问题标题】:Search Simultaneous Special Characters in a string using PowerShell使用 PowerShell 在字符串中搜索同时出现的特殊字符
【发布时间】:2018-06-23 20:06:09
【问题描述】:

我正在尝试解决一个问题,如果一个字符串在一个字符串中有多个“特殊字符”,我该如何用单个字符替换它。 例如:-

$a = "INC0010347~INC0010348~~INC0010349"
$a = $a.Replace("~~","~")
$a

结果1:-“INC0010347~INC0010348~INC0010349”

在上述情况下,如果字符数为 2,则替换功能将起作用。但是任何超过 2 的东西都会失败.. 如下所示:

$a = "INC0010347~INC0010348~~~INC0010349"
$a = $a.Replace("~~","~")
$a

结果 2:-“INC0010347~INC0010348~~INC0010349”

我正在编写一个脚本,它可以帮助我动态地执行此操作,而不管特殊字符的数量(在本例中为波浪号(~))结果应该是

结果1:-“INC0010347~INC0010348~INC0010349”

【问题讨论】:

  • $a.replace("~~") 更改为$a -replace "~+","~"。在这种情况下,您应该始终使用正则表达式。 +其实是一个贪婪的量词+?是懒惰的量词

标签: string powershell replace


【解决方案1】:

只需添加+ 量词:

$a = "INC0010347~INC0010348~~~INC0010349"
$a -replace '~+','~'

或者:

[regex]::Replace($a,'~+','~')

注意:

而不是使用string.Replace 方法,例如$a.Replace('~+','~') 不起作用,请使用支持正则表达式的 -replace[regex]::Replace

见:

Quantifiers in Regular Expressions

【讨论】:

  • AvShalom,感谢您的帮助...请帮助我解决下一个问题,您从哪里获得这些提示。我知道它更多的练习,但这个技巧真的很好......我在哪里可以获得这样的提示和技巧
猜你喜欢
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多