JavaScript-PHP和JS中如何快速比较两个字符串中包含有相同的数字?

JavaScript-PHP和JS中如何快速比较两个字符串中包含有相同的数字?

甜柠檬 发布于 2017-05-30 字数 96 浏览 1056 回复 4

有两个字符串:

$a = "5,8,0";
$b = "8,0,5";

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

泛泛之交 2017-10-31 4 楼

str_replace(explode(',',$a),'',$b) === str_replace(explode(',',$b),'',$a)
满足以上条件则 两个字符串包含的数字是相同的.

若能确定每个字符串中不会 有重复的的数字 :
!str_replace(array_merge(explode(',',$a),array(',')),'',$b)

偏爱自由 2017-10-08 3 楼

js:
方法一:

var s1 = "5,0,8";
var s2 = "8,0,5";
if(s1.split(",").sort().join(",") == s2.split(",").sort().join(",")) {
alert("数字相同");
}else{
alert("数字不同");
}

方法二:

var s1 = "5,0,8";
var s2 = "8,0,5";
var a1 = s1.split(",");
var a2 = s2.split(",");
var isSame = false;
if(a1.length == a2.length) {
isSame = true;
var length = a2.length;
for(var i = 0; i < length; i++) {
if(a1.indexOf(a2[i]) < 0) {
isSame = false;
break;
}
}
}
if (isSame) {
alert("数字相同");
}else {
alert("数字不同");
}

浮生未歇 2017-08-01 2 楼

 $a= "5,8,0";
$b= "8,0,5";
$aarr = explode(',', $a);
$barr = explode(',', $b);
$res = array_diff($aarr, $barr);
if(empty($res)) {
echo 'is same';
} else {
echo 'not same';
}

偏爱自由 2017-07-13 1 楼

php(字符串处理)
原理是搜寻每个分隔符之间的数是否都在另一个字符串里存在,无重复的话就简单很多了,对比一下长度就能不重不漏了

 <?php
$a = '1,2,3,5,8,13,21,34,55,89';
$b = '89,55,5,1,3,13,34,21,8,2';

$a = ','.$a.',';//加上首位的分隔符
$b = ','.$b.',';//加上首位的分隔符

if(strlen($a) == strlen($b)){//长度不一样那肯定不一样
$pos = 0;//数后分隔符的位置
$pos2 = 0;//数前分隔符的位置
$same = true;
do{
$pos2 = $pos;
$pos = strpos($a, ',', $pos + 1);
if($pos !== false){
$pos3 = strpos($b, substr($a, $pos2, $pos - $pos2 + 1));//最终比较的是形如",num,"的字符串
if($pos3 === false){
$same = false;
break;
}
}
}while($pos !== false);
}else{
$same = false;
}
var_dump($same);