PowerShell - 如何在字符串的第一个反斜杠前插入冒号字符?

5
在PowerShell中,我有一个类似于以下值的字符串:
> text/text/text\text\text\text

这个字符串的长度是可变的,可能会有不同数量的正斜杠和反斜杠。

我想在第一个反斜杠之前插入冒号 (:) 字符。所以将其从 ... 改为 ...

> text/text/text\text\text\text

to ...

> text/text/text:\text\text\text

什么是最简单的方法来做到这一点?谢谢

循环遍历字符串,逐个字符检查当前字符是否为''。如果不是,则继续下一个循环;如果是,则将字符串分配给[0]和找到的任何数字之间的字符,加上':'和下一个字符位置到结尾。退出循环。 - coinbird
你能给出一些实现这个的具体代码示例吗? - TheHux
2个回答

4

使用 Insert()IndexOf() 字符串方法:

$string = 'text/text/text\text\text\text'
$result = $string.Insert($string.IndexOf('\'),':')

String.IndexOf():

这个方法会返回指定字符串在源字符串中第一次出现的下标,下标从0开始计数。

String.Insert()则是:

该方法将指定字符串插入到源字符串的指定位置,并返回新的字符串。


使用 PowerShell 3.0+,您还可以轻松地使用正则表达式在字符串中插入冒号:

$result = $string -replace '(?<!\\.*)\\',':\'

正是我所需要的 :) - TheHux

1

我本来想建议这个,但Mathias的回答更好:

$text = 'text/text/text\text\text\text'

$bs = $text.IndexOf('\')
"$($text.Substring(0,$bs)):$($text.Substring($bs))"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接