php - 如何将毒刺的字母替换为另一个指定值
问题描述
我正在尝试编写一个包含字符串的句子。我想要实现的是用另一个指定的值替换刺的字母。
示例:
值:abcdefghijklmnopqrstu vwxyz
赋值:zyxwvutsrqponmlkjihgf edcba
每次在脚本上运行句子时,将“a”分配给“z”,将“b”分配给“y”。
输入:你好吗兄弟?
输出:sld ziv blf yilghvi?
我想用 PHP 编写这个脚本,请有人指出我正确的方向。
解决方案
片段:
function change_text($text){
$replacement_map = array_merge(
array_combine( range('a','z'), range('z','a')),
array_combine( range('A','Z'), range('Z','A'))
);
$length = strlen($text);
for($i = 0;$i < $length; ++$i){
if(!isset($replacement_map[ $text[$i] ])) continue; // skip characters that don't require replacing
$text[$i] = $replacement_map[ $text[$i] ]; // replace current character with the desired one
}
return $text;
}
echo change_text("how are you brother?");
算法:
- 上面的代码适用于小写和大写字母。
- 我们构建一个字母字符的映射(关联数组)及其所需的目标字符,如下所示:
映射(关联数组):
array (
'a' => 'z',
'b' => 'y',
'c' => 'x',
'd' => 'w',
'e' => 'v',
'f' => 'u',
'g' => 't',
'h' => 's',
'i' => 'r',
'j' => 'q',
'k' => 'p',
'l' => 'o',
'm' => 'n',
'n' => 'm',
'o' => 'l',
'p' => 'k',
'q' => 'j',
'r' => 'i',
's' => 'h',
't' => 'g',
'u' => 'f',
'v' => 'e',
'w' => 'd',
'x' => 'c',
'y' => 'b',
'z' => 'a',
'A' => 'Z',
'B' => 'Y',
'C' => 'X',
'D' => 'W',
'E' => 'V',
'F' => 'U',
'G' => 'T',
'H' => 'S',
'I' => 'R',
'J' => 'Q',
'K' => 'P',
'L' => 'O',
'M' => 'N',
'N' => 'M',
'O' => 'L',
'P' => 'K',
'Q' => 'J',
'R' => 'I',
'S' => 'H',
'T' => 'G',
'U' => 'F',
'V' => 'E',
'W' => 'D',
'X' => 'C',
'Y' => 'B',
'Z' => 'A',
)
$text
现在,我们只需逐个字符循环并检查该字符是否存在于我们的地图中。如果是,我们将其替换为新的目标字符,否则保持原样并返回结果。
推荐阅读
- node-red - 节点红色网页未加载
- python - 迭代 QTreeView 行
- amazon-web-services - 如何使用 CloudFormation 从别名获取 AWS SSM Key Arn?
- excel - 在列中查找包含文本且在字符串的前 6 个字符中不包含特定单词的单元格
- r - 在 R 中绘制 glm 会引发关于 x 和 y 中的行数的错误
- angular - 仅在创建元素后使用 @ViewChild 获取 html 元素
- c# - 如何找到场景中附加特定组件的对象数量?
- css - 如何同时进行按钮和输入框过渡?
- python - Google Colaboratory - 超出最大调用堆栈大小
- sql - 在sql查询中查找每个用户和日期的最新行