我有一个看起来像这样的字符串:
"Comments : @{id=15161772,we are happy with the service,likes=&÷€$:#,hsbdinsjsonsjbdjdjid}"
我想得到“我们对服务感到满意”这一部分。
我尝试过类似的事情:
$string ="Comments : @{id=15161772,we are happy with the service,likes=&÷€$:#,hsbdinsjsonsjbdjdjid}"
$string.split(",") | foreach {if(($_ -Notlike "*id=*" ) -and ($_ -Notlike "*likes=*")){$_ }}
我得到的结果为:
We are happy with the service
hsbdinsjsonsjbdjdjid
我希望只得到“我们对服务感到满意”。
答案 0 :(得分:1)
如果您可以保证您要查找的项目不包含逗号,那么您只需查看逗号分隔字符串中的第二个元素。
$string.split(",")[1]
答案 1 :(得分:1)
我会选择RegEx选项...
$string ='Comments : @{id=15161772,we are happy with the service,likes=&÷€$:#,hsbdinsjsonsjbdjdjid}'
$string -replace ".*?=.*?,(.*?),likes=.*", "`$1"
输出您想要的文字,并且应该在第一个等号之后和,likes=
之前返回所有内容。如果要捕获它,只需将其分配给变量,例如:
$Comment = $string -replace ".*?=.*?,(.*?),likes=.*", "`$1"
然后$Comment
将包含字符串we are happy with the service
。
这应该比分割逗号更灵活。有关RegEx如何工作的示例和更多详细信息,请参阅:https://regex101.com/r/fK1oX6/1
答案 2 :(得分:1)
使用正则表达式分割:
$string = 'Comments : @{id=15161772,we are happy with the service,likes=&÷€$:#,hsbdinsjsonsjbdjdjid}'
($string -split 'id=\d+,|,likes=')[1]
we are happy with the service