【问题标题】:Removing spaces from a string using Powershell使用 Powershell 从字符串中删除空格
【发布时间】:2019-10-23 03:25:07
【问题描述】:

我有一个问题,从数据库中提取数据有时(经常)会在不应该存在的文本字符串之间添加空格。

我要做的是创建一个小脚本来查看这些字符串并删除空格。

问题是空格可以在字符串中的任意位置,而字符串是一个会变化的变量。

例子:

"StaffID": "0000 25" 或者:"DateOfBirth": "23-10-199 0"

问题是同样的数据也有这样的行:
"Address": " 91 Broad street"

我尝试过使用 TRIM,但这只会从开始/结束中删除空格。

值得一提的是,提取的数据是json格式,然后通过API导入到新系统中。

【问题讨论】:

  • 对于您知道要删除所有空格的道具,您可以使用-replace '\s{1,}' 将一个或多个空格替换为空。
  • 这看起来像 JSON。我认为,一个很好的问题是——这些“坏”数据来自哪里?它在像这样23-10-199 0 的原始数据库中吗?如果是这样,您就会遇到非常难以克服的数据问题。这可能首先是“修复您的数据”的答案。否则,提取过程是否会导致问题?
  • 这是一个 JSON。我已经在数据库中正确检查了数据库及其记录器,即没有空格。显然与它如何提取然后格式化有关,但我似乎找不到问题,所以认为执行脚本来删除空格可能更容易。看来我错了..

标签: powershell spaces stripping


【解决方案1】:

您应该考虑您想要做什么的逻辑,以及是否可以通过编程方式确定您是否可以教您的脚本在哪里放置空格是合适的或不合适的。事实上,这是目前人工智能研究面临的最大问题之一,所以不幸的是,你可能不得不手动完成这项工作。

如果是我,我会指定每列的数据格式类型,并尽我所能尝试解析这些字符串。例如,如果您知道 StaffID 不包含空格,则可以有一个规则来删除它们:

$staffid = $staffid.replace("\s+",'')

您可以使用已在in this answer 中介绍的强制格式化 (.replace) 执行一些更复杂的操作,但同样,这需要对从哪一列中输出的确切数据有一些期望。

您可能希望更仔细地查看这些空间的来源,而不是像这样处理输出。检索脚本在做吗?也许你可以优化你正在绘制的数据库?

【讨论】:

    猜你喜欢
    • 2019-11-05
    • 2011-09-21
    • 2017-11-20
    • 1970-01-01
    • 2012-03-25
    相关资源
    最近更新 更多