通过特殊的char进行拆分,并删除php和javascript数组中的空元素


split by special char and remove empty elements in php and javascript array

我有一个由数字合并的合并字符串,每个数字元素的开头和结尾都有&字符。

实际字符串&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);
相关文章: