String 在从末尾开始的字符串计数中添加字符
我有一个文本文件,我需要检查一个特殊的字符是否出现在一个特殊的位置 首先我要知道,这个角色是否存在。如果不是,我想把它添加到丢失的位置。问题是,我正在检查的字符前面的字符数正在变化。这意味着我不能简单地使用String 在从末尾开始的字符串计数中添加字符,string,powershell,insert,String,Powershell,Insert,我有一个文本文件,我需要检查一个特殊的字符是否出现在一个特殊的位置 首先我要知道,这个角色是否存在。如果不是,我想把它添加到丢失的位置。问题是,我正在检查的字符前面的字符数正在变化。这意味着我不能简单地使用insert在同一位置添加字符 但是字符串的结尾看起来总是一样的。有没有一种方法,我可以直接在缺少字符的位置添加字符,或者在从字符串末尾向后数字符后将其插入到某个位置 目前,我的代码如下所示: $content = Get-Content Path\to\file.txt foreach ($
insert
在同一位置添加字符
但是字符串的结尾看起来总是一样的。有没有一种方法,我可以直接在缺少字符的位置添加字符,或者在从字符串末尾向后数字符后将其插入到某个位置
目前,我的代码如下所示:
$content = Get-Content Path\to\file.txt
foreach ($line in $content) {
if ($line[-6] -ne '\') {
#Add character here
}
echo $line
}
编辑:
这正是我想要的,但我认为这远远不是一个好的解决方案:
$content = Get-Content path\to\file.txt
foreach ($line in $content) {
if ($line[-25] -ne '\') {
$new_line = $line.Split(';')[0]
$new_line1 = $line.Split(';')[1] + '\' | % {$_ -replace '"', ''}
$new_line2 = $line.Split(';')[2]
$test = Write-Host $new_line';"'$new_line1'";'$new_line2
}
}
echo $test
这可以通过
regex
replace-too(一行程序)完成:
假设您的特殊字符是%
,并且您总是希望将其放在最后三位:
"12345689" -replace '^(.*?)%?(.{2})$', '$1%$2'
结果:
1234567%89
1234567%89
如果%
已就位,则不会更改:
"123456%89" -replace '^(.*?)%?(.{2})$', '$1%$2'
结果:
1234567%89
1234567%89
您可以使用负向后看和正向前看来替换正则表达式:
$line -replace '(?<!\\)(?=.{6}$)', '\'
$line-替换“(?)?
(?是一个否定的lookback,基本上意思是“匹配之前不存在此项”,“此项”在这里是一个反斜杠。
(?=…)
是一个正向前瞻,意思是“匹配后确实存在”,“这”是字符串($
)末尾的6个字符({6}
)的序列
lookahead和lookahead表达式都不会成为匹配的一部分,因此上面的操作只是用反斜杠替换负lookahead和正lookahead之间的空字符串(从而有效地将该字符插入字符串),但前提是字符串末尾的6个字符前面没有反斜杠。这正是我要找的!Thx现在我只需要找出如何将该字符直接替换到文件中。(获取内容文件名)-替换…|设置内容文件名