示例字符串:
<TemperatureRange min="min3" max="max3" uom="uom13" code="1013" />
<TemperatureRange min="min4" max="max4" uom="uom13" code="1013" />
查找内容: <TemperatureRange min="min.*" max="max.*" u
替换为: <TemperatureRange min="10" max="10" u
输出:
<TemperatureRange min="10" max="10" uom="uom13" code="1013" />
<TemperatureRange min="10" max="10" uom="uom13" code="1013" />
预期输出:
<TemperatureRange min="10" max="10" uom="uom13" code="1013" />
<TemperatureRange min="11" max="11" uom="uom13" code="1013" />
答案 0 :(得分:0)
由于您使用的是Notepad ++,因此我假设您拥有Powershell。
随意改进此处的代码,因为它可能不太高效,但是应该可以满足您的需求。我做到了,这样您甚至可以从最小和最大的不同数字开始。
function ReplaceFirstOccurrence ([string] $Source, [string]$Find, [string]$Replace)
{
$Place = $Source.IndexOf($Find);
$result = $Source.Remove($Place, $Find.Length).Insert($Place, $Replace);
return $result;
}
$text = @"
<TemperatureRange min="min3" max="max3" uom="uom13" code="10131" />
<TemperatureRange min="min3" max="max3" uom="uom13" code="10132" />
<TemperatureRange min="min3" max="max3" uom="uom13" code="10133" />
<TemperatureRange min="min3" max="max3" uom="uom13" code="10134" />
"@
#alternatively, you can read text from file with Get-Content -Path c:\path\to\file.txt
$findWhat = @"
<TemperatureRange min="min.*" max="max.*" u
"@
$replaceWithTemplate = @"
<TemperatureRange min="{num1}" max="{num2}" u
"@
$startNums = @{}
$startNums["{num1}"] = 10
$startNums["{num2}"] = 10
$matches = [regex]::Matches($text, $findWhat)
$outputResult=$text
foreach ( $match in $matches){
$replaceWith = $replaceWithTemplate
foreach($key in $($startNums.Keys))
{
$replaceWith = $replaceWith -replace $key,$startNums[$key]
$startNums[$key]++
}
$outputResult = ReplaceFirstOccurrence $outputResult $match.Value $replaceWith
}
$outputResult
结果是:
<TemperatureRange min="10" max="10" uom="uom13" code="10131" />
<TemperatureRange min="11" max="11" uom="uom13" code="10132" />
<TemperatureRange min="12" max="12" uom="uom13" code="10133" />
<TemperatureRange min="13" max="13" uom="uom13" code="10134" />
答案 1 :(得分:0)
如果您希望替换的行在一起,则可以执行以下操作:
替换为(无数字):
<TemperatureRange min="" max="" uom="uom13" code="1013" />
使用notepad ++的列编辑器(编辑=>列编辑器/ ALT + C)。这样您就可以用连续的数字填充列。