我有一个字符串数组,假设它们是文件名,看起来像这样
$filenames = [
"Index",
"ACME Corp - Services",
"Products - ACME Corp",
"Contact Us - ACME Corp",
"History - ACME Corp - The greatest producer of ACME widgets!"
];
假设我无法控制这些。
我将如何编写一个算法来实现
- 弄清楚
ACME Corp
是一个公共(public)子字符串,但并未出现在所有字符串中 - 修剪
ACME Corp
文件名之外(可以留下破折号和空格)
我无法理解第一步 - 如何迭代这个数组并找到共享子字符串?
更新:只是为了解决一些评论,它会有字边界并且不区分大小写,所以 ACME Corp
和acme corp
将是可接受的匹配,但任何与单词内的模式匹配的内容都不会。
最佳答案
在不知道您要解决什么问题的情况下,这是一个棘手的问题。您可以按空格分解数组中的每个字符串并捕获该字符串在数组中出现的次数,但这不考虑短语。搜索引擎是合适的解决方案,但如果不知道您要查找的术语或短语,它不会对您有太大帮助。
分解粗略的想法:
$words = array();
foreach ($stringArr as $str) {
$parts = explode(" ", $str);
foreach ($parts as $word) {
$words[$word] += 1;
}
}
关于php - 查找数组中的字符串是否共享子字符串并将其修剪掉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31167869/