2013-02-21 42 views
0

是的,这是另一个PowerShell的回报问题...PowerShell的返回与string.replace值

$str = 'My {token} string' 

$newStr = $str.Replace('{token}', 'value') 
$newStr 
My value string 

function strReplace ($str, $rval) { $str.Replace('{token}', $rval) } 
$newStr = strReplace($str, 'value') 
$newStr 
My string 
value 

即使返回与string.replace一个字符串,对象[]在返回管道出现。为什么??有没有办法获得明显的回报价值?

+0

当我运行这段代码,它获得与以下行错误: $中newstr = strReplace($海峡,“值') 但我用它替换它时: $ newStr = strReplace $ str'value' 它按预期工作。我使用的是.net 4.0的Powershell 2.0 – 2013-02-21 20:05:42

+0

也许这是对ps3的改变? – bob 2013-02-21 20:35:51

回答

3

这是因为您在函数中传入一个数组作为$str的参数。你需要调用这样的PowerShell函数(没有支架,没有逗号分隔参数):

$newStr = strReplace $str 'value' 
+0

谢谢,但即使删除括号后,我仍然得到相同的对象[]。我在Win8上使用ps3。 – bob 2013-02-21 20:27:44

+0

您是否记得放弃逗号?空格用于分隔参数 – 2013-02-21 20:39:17

+0

呃 - 你是对的。有一段时间没有用过ps。谢谢! – bob 2013-02-21 20:48:45