regex 使用电子表格进行字符移位

guicsvcw  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(99)

我想用LibreOffice Calc(和Excel一样)做一个凯撒密码。我不想使用宏,我试图只使用公式。首先我想得到字符串中每个字符的ASCII码。
我试过使用Regex,但我无法得到我想要的。首先,我想得到每个字符的UNICODE。我设法得到:
=REGEX(K15,"([a-zA-Z])",UNICODE("$1"),"g")
其中K15是文本所在的位置,即“测试”。
结果是“36363636”。我只得到了4次美元符号的代码字符。我做错了什么?
谢谢

vsaztqbk

vsaztqbk1#

由于您没有提到任何关于限制为单个公式的要求,因此我们可以使用helper列来实现这一点。首先,我在K16中添加了移位距离,以7为例。
现在在L15中,添加以下公式以提取第一个字母。通过拖动填充到L18。(ROW()函数是为了方便起见-您可以简单地将值更改为1,2,3和4)。

=MID(K$15;1+ROW()-ROW(K$15);1)

接下来是M15中的大公式,它完成了大部分工作。加注至M18。

=IF(CODE(L15)+K$16>CODE("z");CHAR(CODE(L15)+K$16-CODE("z")+CODE("a")-1);CHAR(CODE(L15)+K$16))

公式转换为码点,然后加上移位距离。如果它经过z的代码点,那么绕到a的代码点。最后,将代码点转换回字符。
完成后,只需添加=TEXTJOIN(;;M15:M18)即可得到结果,即alza。我把它放进了K17。

相关问题