我有一个单字母代码的字符串,如
MGCLGNSKTEDQRNEEKAQREAMGCLGNSKTEDQRNEEKAQREAMGCLGNSKTEDQRNEEKAQREA
我想在字符串中的每个字母上打印一个序列号。
喜欢
123456789101112131415161718192021222324252627282930
MGCLGNSKTED Q R N E E K A Q R E A M G C L G N S K T
提前感谢。
答案 0 :(得分:2)
了解一些奇特的PHP函数的好借口:
<?php
$single_letter_codes = 'MGCLGNSKTEDQRNEEKAQREAMGCLGNSKTEDQRNEEKAQREAMGCLGNSKTEDQRNEEKAQREA';
foreach(range(1, strlen($single_letter_codes)) as $number){
echo $number;
}
echo PHP_EOL;
foreach(str_split($single_letter_codes) as $index => $letter){
// Changed ' ' to '·' to make it visible
echo str_pad($letter, strlen($index+1), '·', STR_PAD_LEFT);
}
echo PHP_EOL;
假设:
右对齐,如:
10
A
我们得到:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
MGCLGNSKT·E·D·Q·R·N·E·E·K·A·Q·R·E·A·M·G·C·L·G·N·S·K·T·E·D·Q·R·N·E·E·K·A·Q·R·E·A·M·G·C·L·G·N·S·K·T·E·D·Q·R·N·E·E·K·A·Q·R·E·A
更新:要将其显示为HTML,您需要强制使用固定宽度的字体。最简单的方法是将所有内容都包含在<pre></pre>
标记集中。
我会留下作为读者的练习,如何使用空格而不是点。
答案 1 :(得分:0)
如果我找对你,那么这就是你所需要的(谨慎,可能会有小错误,测试):
function printSerial($string){
$map = array(
'M' => 1,
'G' => 2,
'C' => 3,
// ... please continue
);
$output = '';
for($i=0; $i<strlen($string); $i++){
$output .= $map[$string[$i]];
}
echo $output;
}
答案 2 :(得分:0)
也许这可以帮助......
<?php
$str = 'MGCLGNSKTEDQRNEEKAQREAMGCLGNSKTEDQRNEEKAQREAMGCLGNSKTEDQRNEEKAQREA';
$len = strlen($str);
$nums = '';
$lets = '';
for ($i = 1; $i <= $len; $i++) {
$nums .= $i;
$lets .= sprintf('% ' . strlen($i) . 's', $str[$i - 1]);
}
echo $nums . "\n" . $lets;
你会得到
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
MGCLGNSKT E D Q R N E E K A Q R E A M G C L G N S K T E D Q R N E E K A Q R E A M G C L G N S K T E D Q R N E E K A Q R E A