我有一个问题,我需要替换字符串中最后一个单词.
情况:我得到一个字符串,格式如下:
string filePath ="F:/jan11/MFrame/Templates/feb11";
Run Code Online (Sandbox Code Playgroud)
然后我这样替换TnaName:
filePath = filePath.Replace(TnaName, ""); // feb11 is TnaName
Run Code Online (Sandbox Code Playgroud)
这有效,但我遇到的问题TnaName与我的相同folder name.当发生这种情况时,我最终得到一个这样的字符串:
F:/feb11/MFrame/Templates/feb11
Run Code Online (Sandbox Code Playgroud)
现在,它已经取代两次出现的TnaName用feb11.有没有办法可以只替换字符串中最后一次出现的单词?
注:feb11是TnaName它来自另一个进程-这不是一个问题.
我有一个函数在文件中执行正则表达式替换.问题是它在它接触的每个文件的开头都添加了一个字符(0x00)(即使它找不到匹配的文件!).由于我正在编辑csproj文件,MSBuild给了我这个错误:
error MSB4025: The project file could not be loaded. '.', hexadecimal value 0x00, is an invalid character. Line 2, position 1.
Run Code Online (Sandbox Code Playgroud)
这是我的功能:
function fileStringRegExReplace ([string] $fileToChange, [string] $oldString, [string] $newString) {
echo "f" | xcopy "$fileToChange" "$fileToChange.og.cs" /Y /Q
$file = Get-Content "$fileToChange.og.cs" |
Foreach-Object {
$_ -replace $oldString, $newString
} |
Out-File "$fileToChange"
Remove-Item "$fileToChange.og.cs"
}
Run Code Online (Sandbox Code Playgroud)
如何替换我想要的行而不更改文件的任何其他部分?