Streamreader区分大小写

时间:2014-03-09 16:14:53

标签: powershell streamreader

我最近将一些脚本从使用Powershell Get-content切换到streamreader-现在一切都快得多,但我在搜索时出现了区分大小写的问题。

我确实在stackoverflow上看到了另一篇文章,但无法解决改变的问题(新手!)所以希望有人可以提供建议。

我的脚本的一个例子是

$fullname = Get-Item c:\file.txt
$sr = New-Object System.IO.StreamReader("$fullName")
while (($line = $sr.ReadLine()) -ne $null) {
if ($line.contains("London")) { "$line" | add-content c:\results.txt}

我已经读过上面某处的StringComparison.CurrentCultureIgnoreCase可能会有所帮助 - 帮助!

1 个答案:

答案 0 :(得分:0)

好吧,你使用的是.NET方法包含的。你很容易得到你想要的东西。所以,

$line.contains("London") 

区分大小写,但

$line -contains "London"

不是。这可以解释得更好:

PS C:\> "london".contains("London")
False
PS C:\> "london" -contains "London"
True

示例:

PS C:\> cat c:\temp\a.txt
Londonnn
london
New York
hello
world

PS C:\> $sr = new-object System.io.streamreader(get-item C:\Temp\a.txt)
PS C:\> while ($line = $sr.readline()) { if ($line -contains "London"){ $line} }
london

更新: - 无论如何,Contain都会期待'确切'一词。您可能希望使用-match代替您的用例。看到差异:

PS C:\> while ($line = $sr.readline()) { if ($line -match "London"){ $line} }
Londonnn
london