如何创建一个接受字符串并将其转换为另一个托管字符串的脚本?
How to create a script that takes a string and converts it to another managed string?
我的目的是捕获我键入的字符串的值并将这些值转换为其他字母。从本质上讲,它将是一个伪造的翻译程序或自定义密码生成脚本。函数示例:
我会输入句子:
你是谁?
例如, 并且输出将移位 1 到下一个辅音或元音。该脚本还需要知道如何根据需要跳过元音或辅音,并且为了参数 y 始终被视为元音。所以输出将是:
Xju eso auy?
这是我想尝试的创意写作项目,作为制作另一种语言的一种方式。理想情况下,shift 变量也可以作为输入,用于找到最佳结果。甚至可能同时对元音和辅音进行可变转换?
如果您真的是为了创意写作项目而这样做,那么我认为没有必要深入研究编程。您描述的 None 个输入转换需要程序做出 个决定 。那是;一旦选择了一种编码,每个传入的字母都将与传出的字母紧密相关。这大大扩展了您实现此目标的选项,并大大简化了任务的复杂性。
由于您标记了 Terminal,这里有一些您可以在操作中使用的命令:
echo "Who are you?" | perl -pe 'tr/N-ZA-Mn-za-m/A-Za-z/'
输出:Jub ner lbh?
这就是著名的 Rot13 "encoding"(它所做的只是替换字母表中后面 13 的字母)。它特别方便,因为 13 是字母表 26 的一半,所以输入一些 "encoded" 文本将返回原始文本:
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 说明。
速记;通常点击 return 在终端中运行命令。你可以在一行的末尾放一个反斜杠 \
,然后点击 return,它会让你在下一行继续输入,但将其视为一个命令。方便排队。
echo "How are you?" | tr \
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' \
'DFVBTXEUWZOSHCJMAQYRINKLPGdfvbtxeuwzoshcjmaqyrinklpg'
输出:Ujk dqt pji?
还有另一个命令,tr
。这个例子演示了一个任意的替换——在这个例子中,是随机的。它查看第一长组字母,然后换入匹配 位置 的第二长组中的字母。由于这个替换示例是随机的,您可以使用这种映射来创建 "Cryptogram" 个谜题。
tr
命令的妙处在于,您可以告诉它使用您喜欢的任何输入到输出 "mapping"。当然,它有点手动,但是嘿——不需要编程!
这是实现您请求的 "consonants and vowels" 示例转换的映射:
echo "Who are you?" | tr \
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' \
'ECDFIGHJOKLMNPUQRSTVYWXZABecdfighjoklmnpuqrstvywxzab'
输出:Xju esi auy?
不用手写有它的好处——你错过了一个元音。
因此,如果您需要快速尝试不同的映射,请考虑更多地了解 perl
(或更简单:sed
。或更复杂:awk
。或或或... ).相反,如果您不介意仔细构建命令,只需将每个传入字母与您想要的输出字母对齐,我认为 tr
会很好。
我的目的是捕获我键入的字符串的值并将这些值转换为其他字母。从本质上讲,它将是一个伪造的翻译程序或自定义密码生成脚本。函数示例:
我会输入句子:
你是谁?
例如,并且输出将移位 1 到下一个辅音或元音。该脚本还需要知道如何根据需要跳过元音或辅音,并且为了参数 y 始终被视为元音。所以输出将是:
Xju eso auy?
这是我想尝试的创意写作项目,作为制作另一种语言的一种方式。理想情况下,shift 变量也可以作为输入,用于找到最佳结果。甚至可能同时对元音和辅音进行可变转换?
如果您真的是为了创意写作项目而这样做,那么我认为没有必要深入研究编程。您描述的 None 个输入转换需要程序做出 个决定 。那是;一旦选择了一种编码,每个传入的字母都将与传出的字母紧密相关。这大大扩展了您实现此目标的选项,并大大简化了任务的复杂性。
由于您标记了 Terminal,这里有一些您可以在操作中使用的命令:
echo "Who are you?" | perl -pe 'tr/N-ZA-Mn-za-m/A-Za-z/'
输出:Jub ner lbh?
这就是著名的 Rot13 "encoding"(它所做的只是替换字母表中后面 13 的字母)。它特别方便,因为 13 是字母表 26 的一半,所以输入一些 "encoded" 文本将返回原始文本:
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 说明。
速记;通常点击 return 在终端中运行命令。你可以在一行的末尾放一个反斜杠 \
,然后点击 return,它会让你在下一行继续输入,但将其视为一个命令。方便排队。
echo "How are you?" | tr \
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' \
'DFVBTXEUWZOSHCJMAQYRINKLPGdfvbtxeuwzoshcjmaqyrinklpg'
输出:Ujk dqt pji?
还有另一个命令,tr
。这个例子演示了一个任意的替换——在这个例子中,是随机的。它查看第一长组字母,然后换入匹配 位置 的第二长组中的字母。由于这个替换示例是随机的,您可以使用这种映射来创建 "Cryptogram" 个谜题。
tr
命令的妙处在于,您可以告诉它使用您喜欢的任何输入到输出 "mapping"。当然,它有点手动,但是嘿——不需要编程!
这是实现您请求的 "consonants and vowels" 示例转换的映射:
echo "Who are you?" | tr \
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' \
'ECDFIGHJOKLMNPUQRSTVYWXZABecdfighjoklmnpuqrstvywxzab'
输出:Xju esi auy?
不用手写有它的好处——你错过了一个元音。
因此,如果您需要快速尝试不同的映射,请考虑更多地了解 perl
(或更简单:sed
。或更复杂:awk
。或或或... ).相反,如果您不介意仔细构建命令,只需将每个传入字母与您想要的输出字母对齐,我认为 tr
会很好。