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