在php中重写一个字符串,并在其中添加信息



我有这个字符串

[ 1, 6], [ 2, 5]

我只需要把它重写成

['lat' => 1, 'long' => 6],['lat' => 2, 'long' => 5]

因此,逻辑应该在每个第一个数字加上"lat"=>之前,每个第二个数字加"long"=>之后,但我不确定。我使用的是php,但如果我有带逻辑的代码,那么使用任何其他语言都不会有问题。那你

<?php
function transform($str) {
    $str = str_replace('], ', '@', $str);
    $str = str_replace('[', "['lat' =>", $str);
    $str = str_replace(',', ", 'long' =>", $str);
    $str = str_replace('@', '],', $str);
    return $str;
}
$in  = '[ 1, 6], [ 2, 5]';
$out = "['lat' => 1, 'long' => 6],['lat' => 2, 'long' => 5]";
print assert($out == transform($in));

正则表达式的替代方法是普通字符串函数:

<?php
$input = '[ 1, 6], [ 2, 5]';
list($latA, $longA, $latB, $longB) = sscanf($input, '[ %d, %d], [ %d, %d]');
$output = sprintf(
    "['lat' => %d, 'long' => %d],['lat' => %d, 'long' => %d]", 
    $latA, $longA, $latB, $longB
);
var_dump($output);

输出为:

string(51) "['lat' => 1, 'long' => 6],['lat' => 2, 'long' => 5]"

然而,我怀疑这个真的是你想要的。这两种格式看起来更像是它们实际上并不是字符串,而是一个包含两个数字数组的数组,每个数组有两个元素作为输入,一个关联数组作为输出。如果是这样,那么答案会简单得多:-)

相关内容

最新更新