我有一个由数字合并的合并字符串,每个数字元素的开头和结尾都有&
字符。
实际字符串&1&&3&&5&
如果您在此字符串中添加6,则最终字符串将为&1&&3&&5&&6&
问题是,当我想在这个数组字符串中获取数字时,数组中有太多的空元素,我也不需要它们。
当我拆分explode(',', actualstr)
时,数组是["1","","3","","5","","6"]
,但我需要这个["1","3","5","6"]
我会多次这样做,所以需要最有效的方式。
js中也有类似的场景,如果有特殊的方式需要知道,如果没有,手动检查也可以。
删除前导和尾随的&
,然后用双&&
删除explode
。
$array = explode('&&',trim($str,'&'));
print_r($array);
Array
(
[0] => 1
[1] => 3
[2] => 5
[3] => 6
)
一个快速解决方案是使用regex,但前提是您100%了解使用的数据
preg_match_all("/[0-9]/", "&1&&3&&5&&6&", $numbers);
var_dump($numbers);
array(1) {
[0]=>
array(4) {
[0]=>
string(1) "1"
[1]=>
string(1) "3"
[2]=>
string(1) "5"
[3]=>
string(1) "6"
}
}
另一种方法是使用数组筛选器,如果'&'之间的数据不适合通过regex 进行筛选
array_filter(explode("&", "&1&&3&&5&&6&"))
您可以使用trim()函数从字符串中删除空间字符或删除空间字符。
$str = "&1&&3&&5&&6&";
$str_clear = trim($str, '&');
$array = explode('&&',$str_clear);
print_r($array);
我不知道如何提取这个字符串的数字,但如果你这样做,你可以得到一个数字数组:
preg_match_all('/&([0-9])&/','&1&&3&&5&',$matches);
var_dump($matches);
在JavaScript中,你可以做一些类似@AlexAndrei在PHP中所做的事情:
var str='&1&&3&&5&';
var result=str.substr(0,str.length-1).substr(1).split('&&');
console.log(result);
我想这就是你想要做的。
$str = "&1&&3&&5&&6&";
$numArray = preg_split('/&/', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($numArray);