gpt4 book ai didi

powershell - 如何修剪字符串直到第一个大写字母

转载 作者:行者123 更新时间:2023-12-02 16:08:08 25 4
gpt4 key购买 nike

这是我的问题。如果我输入 $env:UserName,输出是 JoeDow我需要的是从末尾修剪这个字符串,直到第一个大写字符。输出应该是 JoeD我尝试了一切但没有运气提前致谢中号

最佳答案

RegEx 很棒,但在这种情况下很简单:

$String = 'JoeDow'
$String -creplace '[a-z]+$'

这只是说区分大小写替换字符串末尾的 a-z 中的任何小写字符。

在你的情况下:

$env:USERNAME -creplace '[a-z]+$'

注意:我可以想到很多方法来做到这一点。上面的特定方法假设有 2 个大写字母,我们只想在最后一个大写字母之后切掉小写字母。如果你给它一个像'Joe'这样的字符串,它会返回“J”,因为它会替换尾随的小写字母。因此,如果这不是一个 super 一致的场景,我们可能不得不走另一条路。

更新,基于 Sage's nice example

如果您使用 .LastIndexOfAny(),再次确保格式稳定,您可以用很少的几行来确定它:

$String = "JoeDow"
$CapitalLetters = [Char[]](65..90)
$String.Substring(0, ($String.LastIndexOfAny($CapitalLetters) +1 ))

这依赖于最后一个资本而不是第二个资本。同样,这取决于您期望的模式的可靠性。

另一种 RegEx 方法:

$String = "JoeDow"
$String = -join ($String -csplit "([A-Z])")[1..3]
$String

这个使用大写字母作为分隔符,但是括号指示 -csplit 运算符返回数组中的分隔符。因此,通过选择正确的范围,我们可以确保获得“J”+“oe”+“D”。与其他示例不同,这里使用第二个大写字母,不一定是最后一个。而另一个选择了最后一个不一定是第二个。

关于powershell - 如何修剪字符串直到第一个大写字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68793494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com