如何创建一个接受字符串并将其转换为另一个托管字符串的脚本?

时间:2019-03-23 19:58:32

标签: macos terminal applescript

我的目的是捕获我键入的字符串的值,并将这些值转换为其他字母。本质上,这将是伪造的翻译程序或自定义密码生成脚本。函数示例:

我要输入句子:

你是谁?

,例如,将输出说1移到下一个辅音或元音。该脚本还需要知道如何根据需要跳过元音或辅音,并且出于争论的目的,y始终被视为元音。因此输出为:

Xju eso auy?

这是我想尝试进行创造性写作项目的一种手段,可以用来制作另一种语言。理想情况下,移位变量也可以作为输入,以找到最佳结果。元音和辅音是否可能同时变化?

1 个答案:

答案 0 :(得分:1)

如果您确实是为一个创造性的写作项目这样做,那么我认为不建议深入编程。您描述的所有输入转换都不需要程序做出决定。那是;一旦选择了编码,输入的字母将分别与输出的字母牢固关联。这极大地扩展了您实现此目标的选项,并大大简化了任务的复杂性。

自从标记了 Terminal 后,您可以在操作中使用以下几个命令:

echo "Who are you?" | perl -pe 'tr/N-ZA-Mn-za-m/A-Za-z/'

输出:Jub ner lbh?
这就是著名的Rot13“编码”(它所做的全部是替换字母后面的13个字母)。特别方便,因为13是字母26的一半,因此放入一些“编码”文本将带回原始文本:

echo "Jub ner lbh?" | perl -pe 'tr/N-ZA-Mn-za-m/A-Za-z/'

输出:Who are you?
echo只是将文本发送到屏幕或其他命令。在这里,我们将文本echo "How are you?"放入管道|中,以将其传递给下一个命令perl,这是一个功能强大且灵活的文本处理和报告程序。该行的其余部分只是有关如何在字母表中后面旋转13个字母的perl指令。

快速笔记;通常按回车键在终端中运行命令。您可以在行的末尾加上反斜杠\,然后按回车键,这样您就可以继续在下一行输入内容,但是将其全部视为一个命令。方便整理内容。

echo "How are you?" | tr \
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' \
'DFVBTXEUWZOSHCJMAQYRINKLPGdfvbtxeuwzoshcjmaqyrinklpg'

输出:Ujk dqt pji?
还有另一个命令tr。此示例演示了任意替换-在这种情况下为随机替换。它会浏览第一个长字母组,然后交换匹配的 position 中第二个长字母组中的字母。由于此替换示例是随机的,因此可以使用这种映射来创建“密码”难题。

关于tr命令的妙处在于,您可以告诉它使用您想要的任何输入到输出“映射”。当然,这有点手工,但是,嘿,不需要编程!

以下是实现您要求的“辅音和元音”示例移位的映射:

echo "Who are you?" | tr \
  'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' \
  'ECDFIGHJOKLMNPUQRSTVYWXZABecdfighjoklmnpuqrstvywxzab'

输出:Xju esi auy?不手工做有其优点-您错过了其中的元音。

因此,如果您需要快速尝试其他映射,请考虑学习更多有关perl(或更简单的内容:sed。或更复杂的内容:awk。Or or or…)。相反,如果您不介意一些仔细的命令构造,只是将每个传入的字母与所需的输出字母对齐,那么我认为tr会很好用。