用规则替换PHP中的字符串的第一个字符

时间:2018-10-06 16:09:46

标签: php string

我想根据其值用特定字符替换字符串的第一个字符,

A = 0
B = 1
C = 2

有没有一种基于规则的方法?总共我将有8条规则。

好吧,所以我正在编辑此代码以添加更多信息,因为我认为有些人不了解/不希望获得完整的图片而提供帮助...

我的字符串长度在5到10个字符之间 大写不会考虑到这一点,它不区分大小写 当前没有代码,我不确定执行此操作的最佳方法。我可以在子字符串上写一个if语句,但是我马上就知道效率很低。

下面是我期望的前后,我将这些示例简化了,但是我要做的只是根据其值用特定字符替换第一个字符。目前有8条规则,但将来可能会增加

INPUT          OUTPUT
ANDREW         1NDREW
BRIAN          2RIAN
BOBBY          2OBBY
CRAIG          3RAIG
DAVID          4AVID
DUNCAN         4UNCAN
EDDIE          5DDIE
FRANK          6RANK
GEOFF          7EOFF
GIANA          7IANA
HAYLEY         8AYLEY

如您所见,很简单,但是有一种简单的方法来具体指定应替换的字符吗?

2 个答案:

答案 0 :(得分:2)

假设所有规则都是针对单个字符的,例如在示例中,将它们编码为字典将是最容易的:

$rules = array('A' => 0, 'B' => 0 /* etc... */);
$str[0] = $rules[$str[0]];

答案 1 :(得分:0)

我想这就是你想要的。

<?php

$input = array('ANDREW','BRIAN','BOBBY','CRAIG','DAVID','DUNCAN','EDDIE','FRANK','GEOFF','GIANA','HAYLEY');
$array = range('A','Z');
$array = array_flip(array_filter(array_merge(array(0), $array)));
$output = [];

foreach($input as $k=>$v){
    $output[] = $array[$v[0]].substr($v, 1);
}

print_r($output);
?>

输出:

Array ( 
 [0] => 1NDREW
 [1] => 2RIAN 
 [2] => 2OBBY 
 [3] => 3RAIG
 [4] => 4AVID
 [5] => 4UNCAN
 [6] => 5DDIE
 [7] => 6RANK
 [8] => 7EOFF
 [9] => 7IANA 
 [10] => 8AYLEY
)

演示: https://3v4l.org/BHLPk