我有一个XML文件,我打开并存储在一个字符串中,其中Get-Content
需要执行一系列Replace()
操作来填充一些空的元素。Contains()和Replace()在控制台中工作,但在运行脚本时不工作
我正在复制我需要从XML文件直接替换到脚本中的子字符串,除了一个之外,其他都执行替换。子字符串上使用Contains()
也返回False
。
如果我使用命令行打开XML文件,并尝试执行相同的替换,直接从脚本中复制,它的工作原理和使用Contains()
返回True
。
我认为这可能是Replace()
方法运行的顺序,但我已经重新排列了顺序,但它仍然不起作用。我也认为这可能是一些空白,但我要替换的每个其他子字符串也有一些空白。
有什么想法可能会导致这种差距?
编辑:
代码示例:
$sharedStrings = '.\sharedStrings.xml'
$feeInfo = @('100.00', 'Cheque')
$excelXml = Get-Content -Path $sharedStrings -Encoding UTF8
$excelXml = $excelXml.Replace('Fee Due: £', "Fee Due: £$($feeInfo[0])")
$excelXml = $excelXml.Replace('Expected By: Cheque/Card / On-Line', "Expected By: $($feeInfo[1])")
$excelXml | Out-File -Encoding UTF8 ".\output.xml"
输入XML的示例:
<t xml:space="preserve">Fee Due: £ Expected By: Cheque/Card / On-Line Paid on: / / </t>
输出XML的示例:
<t xml:space="preserve">Fee Due: £ Expected By: Cheque Paid on: / / </t>
当Contains()抛出'false'时,我的第一个猜测是在运行脚本时检查变量是否提供了正确的输出,只需在脚本上输出并检查它即可。 – Paxz
请提供最小的,可验证的完整示例。否则,我们只能猜测。 –
我编辑了一些关于回声输出和函数示例的更多信息。 –