如何在此字符串中添加引号
how to add quotes in this string
我有这个字符串
[{listenport:443,connectaddress:10.1.10.20,connectport:443,firewallrulename:port443,direction:Inbound,action:Allow,protocol:TCP},{listenport:80,connectaddress:10.1.10.20,connectport:80,firewallrulename:port80,direction:Inbound,action:Allow,protocol:TCP}]
我想知道如何编写一个函数将其转换为
[{"listenport":"443","connectaddress":"10.1.10.20","connectport":"443","firewallrulename":"port443","direction":"Inbound","action":"Allow","protocol":"TCP"},{"listenport":"80","connectaddress":"10.1.10.20","connectport":"80","firewallrulename":"port80","direction":"Inbound","action":"Allow","protocol":"TCP"}]
我尝试过使用 insert 和 indexof ,但不知道如何处理整个字符串
如果你真的必须使用这种格式并且不能生成 well-formed JSON 开始,至少在你的示例输入中 属性 名称和值都是仅由.
或属于 \w
正则表达式类别的字符,因此可以进行单个 -replace
操作:
@'
[{listenport:443,connectaddress:10.1.10.20,connectport:443,firewallrulename:port443,direction:Inbound,action:Allow,protocol:TCP},{listenport:80,connectaddress:10.1.10.20,connectport:80,firewallrulename:port80,direction:Inbound,action:Allow,protocol:TCP}]
'@ -replace '[\w.]+', '"$&"'
结果是 well-formed JSON,您可以将其通过管道传输到 ConvertFrom-Json
以在 PowerShell 中进行 OO 处理。
如果您只能假设 属性 名称 仅由 \w
个字符组成:
@'
[{listenport:443,connectaddress:10.1.10.20,connectport:443,firewallrulename:port443,direction:Inbound,action:Allow,protocol:TCP},{listenport:80,connectaddress:10.1.10.20,connectport:80,firewallrulename:port80,direction:Inbound,action:Allow,protocol:TCP}]
'@ -replace '(\w+):', '"":"' -replace '\}|(?<!\}),', '"$&'
最终使用 replace
破解了它
$proxyinfosjson = $proxyinfosjson.Replace(',', '","').Replace('{', '{"').Replace('}', '"}').replace(':', '":"').Replace('}"', '}').Replace('"{', '{')
太丑了..不以此为荣..但有效..
我有这个字符串
[{listenport:443,connectaddress:10.1.10.20,connectport:443,firewallrulename:port443,direction:Inbound,action:Allow,protocol:TCP},{listenport:80,connectaddress:10.1.10.20,connectport:80,firewallrulename:port80,direction:Inbound,action:Allow,protocol:TCP}]
我想知道如何编写一个函数将其转换为
[{"listenport":"443","connectaddress":"10.1.10.20","connectport":"443","firewallrulename":"port443","direction":"Inbound","action":"Allow","protocol":"TCP"},{"listenport":"80","connectaddress":"10.1.10.20","connectport":"80","firewallrulename":"port80","direction":"Inbound","action":"Allow","protocol":"TCP"}]
我尝试过使用 insert 和 indexof ,但不知道如何处理整个字符串
如果你真的必须使用这种格式并且不能生成 well-formed JSON 开始,至少在你的示例输入中 属性 名称和值都是仅由.
或属于 \w
正则表达式类别的字符,因此可以进行单个 -replace
操作:
@'
[{listenport:443,connectaddress:10.1.10.20,connectport:443,firewallrulename:port443,direction:Inbound,action:Allow,protocol:TCP},{listenport:80,connectaddress:10.1.10.20,connectport:80,firewallrulename:port80,direction:Inbound,action:Allow,protocol:TCP}]
'@ -replace '[\w.]+', '"$&"'
结果是 well-formed JSON,您可以将其通过管道传输到 ConvertFrom-Json
以在 PowerShell 中进行 OO 处理。
如果您只能假设 属性 名称 仅由 \w
个字符组成:
@'
[{listenport:443,connectaddress:10.1.10.20,connectport:443,firewallrulename:port443,direction:Inbound,action:Allow,protocol:TCP},{listenport:80,connectaddress:10.1.10.20,connectport:80,firewallrulename:port80,direction:Inbound,action:Allow,protocol:TCP}]
'@ -replace '(\w+):', '"":"' -replace '\}|(?<!\}),', '"$&'
最终使用 replace
破解了它$proxyinfosjson = $proxyinfosjson.Replace(',', '","').Replace('{', '{"').Replace('}', '"}').replace(':', '":"').Replace('}"', '}').Replace('"{', '{')
太丑了..不以此为荣..但有效..