我有一个很大的文件,其中包含记录,其中每个记录中的日期字符串需要增加2天,这将更新它右边的字段,其中包含带有该日期的破折号“ -----”。例如,一条记录包含以下记录数据:
1440149049845_20191121000000 11/22/2019 **--------** 0.000 0.013
我想将'--------'破折号替换为2019年11月24日(日期为2019年11月22日增加2天),以便显示为:
1440149049845_20191121000000 11/22/2019 **11/24/2019** 0.000 0.013
此外,我需要将包含 0.000 的字段替换为0.412,以便整个更新的记录将呈现为以下内容:
1440149049845_20191121000000 11/22/2019 **11/24/2019** **0.412** 0.013
可以在PowerShell中进行编码吗?
答案 0 :(得分:0)
答案是肯定的。您可以执行以下操作:
$("#numberOfShiftPerDay").change(function() {
$(this).prop('disabled', $(this).val() == "1");
});
说明:
$a = '1440149049845_20191121000000 11/22/2019 **--------** 0.000 0.013'
$null = $a -match '\d{2}/\d{2}/\d{4}'
$a -replace '-{2,}',([datetime]$matches.0).adddays(2).tostring('MM/dd/yyyy') -replace '\b0\.000\b','0.412'
使用正则表达式对字符串进行模式匹配。成功的匹配项存储在自动变量-match
中。 $Matches
是每个捕获组的键/值对的哈希表。每个捕获的值都可以通过名称的点引用进行访问。由于我们未指定捕获组名称,而仅使用默认组,因此$Matches
将检索匹配值。
$Matches.0
是一个正则表达式模式,它与日期模式\d{2}/\d{2}/\d{4}'
相匹配。可以从MM/dd/yyyy
中检索匹配项。
使用$Matches.0
加速器,将日期字符串转换为datetime对象,在这里我们可以访问[datetime]
方法。
AddDays()
是另一个与\b0\.000\b
匹配且没有其他相邻字母或数字的正则表达式模式。请注意,0.000
必须用.
进行转义才能原义,因为\
在正则表达式中具有特殊含义。
有时将多个运算符串在一起会更容易。这是拥有多个.
运算符的目的。每个输出都馈入下一个运算符。