如何将字符串中的每个字符更改为字母中的上一个字符

时间:2019-06-17 16:18:32

标签: powershell

我正在寻找一种方法来将字符串中的每个字符更改为字母中的上一个值。本质上,我需要为每个循环创建一个,它将使字符串中的每个字符都向后递增1。例如,我想将bcd234%更改为abc123 $。

我尝试将字符串分成数组,然后从每个元素中减去1。

$myString = "bcd234%"
$myArray = $myString.ToCharArray()
$myArray = $myArray | ForEach-Object { $_ - 1 }
$myArray
-join($myArray)

我希望它可以将值向下迭代1,然后将所有新值连接在一起。

我想看到的是新字符串: abc123 $

它实际上是在为每个字符创建新值并将它们连接在一起。

我得到的结果是新数组: 97 98 99 49 50 51 36

然后将它们连接在一起,如下所示: 97989949505136

1 个答案:

答案 0 :(得分:0)

从char中减去整数时,PowerShell会自动将char转换为整数以进行计算。本质上$_ - 1([int]$_) - 1的作用相同。要找回字符,您只需将操作结果转换回char。

$myArray = $myArray | ForEach-Object { [char]([int]$_ - 1) }

[int]是多余的,如上所述,但是我将其放在适当的位置,所以在那里发生的情况更加明显。