首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在字符串数组中裁剪重复子字符串?

如何在字符串数组中裁剪重复子字符串?
EN

Stack Overflow用户
提问于 2014-05-22 08:32:00
回答 2查看 45关注 0票数 0

我有一个动态数组,如下所示:

代码语言:javascript
复制
array(
  "animal > hairy > dog > Médor",
  "animal > hairy > dog > Fido",
  "animal > hairy > dog > Max",
  "animal > hairy > cat > Scratchy",
  "animal > hairy > bear > badBoy"
)

如何轻松获取删除了相似前缀的数组?

我的意思是,我想获得:

代码语言:javascript
复制
array(
  "dog > Médor",
  "dog > Fido",
  "dog > Max",
  "cat > Scratchy",
  "bear > badBoy"
)

当然,有一种方法可以逐个字母和逐个值进行比较,但这是一个高度复杂的解决方案(相似字母的数量*值的数量),我猜它存在一个更好的方法来做到这一点……

有什么帮助吗?谢谢,

EN

回答 2

Stack Overflow用户

发布于 2014-05-22 08:50:15

抱歉,应该更明确些;正在编辑。递归地使用strrpos (字符串的反向搜索)和substr两次:

代码语言:javascript
复制
for ($i = 0; $i < $numRows; $i++) {
  $Result = substr($Array[$i],0,strrpos($Array[$i], '> ')-1);
  $Result = substr($Array[$i],strrpos($Result, '> ')+2);    
}

这将为您提供所需字符串的初始位置,然后可以轻松获得该位置。

票数 0
EN

Stack Overflow用户

发布于 2014-05-22 08:54:58

PHP有很多内置的字符串函数,preg_replace可能是最强大的,也是我默认使用的。str_replace也可以工作。尝尝这个。

代码语言:javascript
复制
<?php

$bigArray = array(
  "animal > hairy > dog > Médor",
  "animal > hairy > dog > Fido",
  "animal > hairy > dog > Max",
  "animal > hairy > cat > Scratchy",
  "animal > hairy > bear > badBoy"
);

$numRows = count($bigArray);

echo "The number of rows is $numRows<br />";

$newArray = array();
for ($i = 0; $i < $numRows; $i++) {

    $newRow = preg_replace('/animal > hairy > /', '', $bigArray[$i]);    
    array_push($newArray, $newRow);

}
for ($i = 0; $i < $numRows; $i++) {
    echo "$newArray[$i] <br />";
}

?>

这是输出

代码语言:javascript
复制
The number of rows is 5
dog > Médor 
dog > Fido 
dog > Max 
cat > Scratchy 
bear > badBoy 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23795989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档