【问题标题】:How to use PowerShell to remove spaces after ID's listed in a .csv using Powershell如何使用 PowerShell 使用 Powershell 删除 .csv 中列出的 ID 后的空格
【发布时间】:2017-08-10 21:07:50
【问题描述】:

我有一个 CSV,它偶尔会使用工作中的用户 ID 手动更新。我有在列表上进行比较的代码,但某些 ID 后面有空格,因此它们不匹配。

如何对此 CSV 进行数据完整性检查以确保仅列出 ID 名称?换句话说,删除所有空格。

【问题讨论】:

  • " string ".trim()。删除所有前导和尾随空格。

标签: powershell csv spaces


【解决方案1】:

.trim() 字符串方法将删除开头或结尾的空格。还有一个 .trimend() 方法只用于尾随。

$TrimmedCSV = Import-CSV C:\example.csv | ForEach-Object {$_.ID = $_.ID.Trim(); $_} 
$TrimmedCSV | Export-CSV C:\example.csv -NoTypeInformation

正如马特提到的,还有.trimstart()。除了空格之外,您还可以修剪字符。例如,.trim('a')。

【讨论】:

  • 这对我不起作用。在我的 csv 中,标题是 $ids 并且我尝试 trim 和 trimend () 在我运行时都不起作用然后拉起我仍然看到字符之后的值。
  • @socavalier 请发布您的代码,因为我的代码测试工作正常:$TrimmedCSV[1].id.length 1 $unTrimmedCSV[1].id.length 2
【解决方案2】:

你可以很容易地去除空格后进行比较:

(" SAM 500 " -replace ' ', '') -eq "SAM500"

或者,没有看到你的代码可能更接近:

($User -replace ' ','') -eq $oldId

或者,(如前所述)如果您需要保留 一些 个空格,但要确保删除前导和尾随空格,请使用 .Trim()

$NewName.Trim() -eq $prviousName

或者如果你想获得一点创意,你也可以使用 -Match 和正则表达式:

$newName -match "\s+(\b$oldName\b)+\s+"

【讨论】:

  • 它们后面的空格。很确定你也不想弄乱内部空间。
  • @Matt 我也这么认为,但作为用户名......我也会添加修剪,虽然广告会更清晰
  • 根据系统用户名可以有空格。我有一个让我的强迫症发疯的 AD 帐户,因为它有 两个 空格。谁做的。
  • @Matt 我似乎记得不这样做的旧最佳实践,特别是 MS 方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-28
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-29
  • 2020-10-06
相关资源
最近更新 更多