我有一个这种格式的长字符串:
hello; world; this; is; a; string; hello; of; some; words;
它的分号+空格分隔。我需要删除字符串中的所有重复单词。结果字符串应如下所示(删除第二个hello;
):
hello; world; this; is; a; string; of; some; words;
我该怎么做?
答案 0 :(得分:2)
以下是PHP中的一个示例:
$string = "hello; world; this; is; a; string; hello; of; some; words;";
$string = implode("; ", array_unique(explode("; ", $string)));
string
将包含新字符串:“hello; world; this; is; a; string; of; some; words;”。如果你想要一个像这样的字符串:“hello world这是一些单词的字符串”从implode参数中删除"; "
编辑:根据vihan1086的要求,我已在下面发布了原始代码:
$string = "hello; world; this; is; a; string; hello; of; some; words;";
$matches = array_unique(explode("; ", $string))
$string = implode("; ", $matches);
答案 1 :(得分:0)
我会使用拆分&#34 ;; " (半冒号和空格)然后迭代删除重复的单词数组。最后迭代阵列打印我们的&#34 ;; "在两个词之间。
如果您指定所使用的语言,我可以提供示例代码。希望这有帮助
答案 2 :(得分:0)
/(\w+\b)(?!.*\1\b)/g
上面会提供接近你想要的行为,但是它会省略第一个hello而不是第二个hello,所以你的结果字符串最终会变成world; this; is; a; string; hello; of; some; words;
上述正则表达式使用捕获组是没有价值的,因此实际结果不会作为实际字符串返回,除非您将其恢复为该字符串格式。
答案 3 :(得分:0)
RegEx不适合执行此任务。您可以使用explode
array_unique
和implode
。
$yourString = implode('; ', array_unique(explode('; ', $yourString)));
如果你知道你可能有一个没有;
的字符串,你可以使用:
$yourString = (!empty(explode('; ', $yourString))) ? (implode('; ', array_unique(explode('; ', $yourString)))) : $yourString;
我用一些示例输入运行了这个,这就是我得到的:
hello; hello
- >hello
hello; hello; hi
- >hello; hi
hello
- >hello
hello
- >hello;
hello; world; this; is; a; string; hello; of; some; words;
- >hello; world; this; is; a; string; of; some; words;
explode
会拆分字符串的;
。 array_unique
将删除重复项。 implode
会将它融合在一起
答案 4 :(得分:0)
你可以这样做,而不是使用正则表达式:
$string = implode("; ", array_unique(explode("; ", $string)));
答案 5 :(得分:0)
正如安德鲁所提议的那样,拆分清单可能是最简单的解决方案。
<?php
$strWords = "hello; world; this; is; a; string; hello; of; some; words;"
// Split the words up:
$allWords = explode('; ', $strWords);
// Array to store all unique words:
$uniqueWords = array();
foreach($allWords as $word){
if(!in_array($word, $uniqueWords, true)){
// This is a unique word
array_push($uniqueWords, $word);
}
} /* end for-loop */
// Dump the array of unique words:
var_dump($uniqueWords);
?>