如何将字符串中的字母向前或向后移动一个位置


How to move a letter in a string one position forward or backwards.?

我想要一个可以将字符串中的字母前后移动一个位置的东西。

像一样检测字符串中的小i

ik ikdig inchf 

并输出

ki kidgi nichf

也反过来。。。

我还可以添加一些假设吗?比如,如果在i之后的字母后面有一个特定的字母,比如,如果字符串ikL ikgLkf iJLnm中在i旁边的单词之后有一个L,它应该将i移动到L之后。

事实上,我正在尝试制作一个旁遮普字体到Unicode转换器。在旁遮普字体中,像i这样的元音总是在字母之前,而在unicode中,vowvel总是在字母之后。有时,有变音符号,所以元音在字母后面,变音符号。。。

请帮忙。

问题不太清楚,但我认为以下内容应该有效:

$str = 'ik ikdig inchf i9';
$repl = preg_replace('/(i)('p{L})/u', ''2'1', $str);
echo '[' . $repl . "]'n";

输出:

[ki kidgi nichf i9]

我使用了'p{L}u修饰符来确保也支持unicode字符

您应该找到目标字符和单词的位置然后用字符串中的索引改变位置

$temp=$string[$ipos];
$string[$ipos]=$string[$ipos+1];
$string[$ipos+1]=$temp;

如果你想改变位置,你应该注意单词leght