我想删除字符串数组中包含的现有字符串。 例如:
字符串数组包含:
if device.isNew == "1" {
self.title.mas_updateConstraints { (make) in
make?.width.lessThanOrEqualTo()(163.w)
}
self.newTag.isHidden = false
} else {
self.newTag.isHidden = true
self.title.mas_updateConstraints { (make) in
make?.width.lessThanOrEqualTo()(207.w)
}
}
想要的结果:
string [] arra = new string[] {"Financial banking", "mobile application", "customer account opening", "financial", "banking", "mobile", "application", "account banking"};
要删除:
string [] result = new string[] {"Financial banking", "mobile application", "customer account opening"}
因为这些字符串已经存在于字符串数组中
我尝试了以下代码:
financial, banking, mobile, application, account banking
但是它没有返回期望的结果。任何帮助。
答案 0 :(得分:4)
我假设您的算法是:
这会产生预期的输出,但是可能值得在问题中阐明算法。
如果正确,则可以执行以下操作:
'path-aliases' => array(
'%drush-script' => 'your-server-path-here/.composer/vendor/drush/drush/drush'
),
我们使用HashSet<string>
来记录我们看到的单词,并告诉它在进行单词之间的比较时使用StringComparer.InvariantCultureIgnoreCase
比较器,因此它会说两个单词是相同的即使他们使用不同的大小写。 (您可能要在此处使用StringComparer.CurrentCultureIgnoreCase
或StringComparer.OrdinalIgnoreCase
。)
答案 1 :(得分:0)
那Distinct
方法又如何呢?
var result = arra.Distinct(new DistinctItemComparer()).ToArray();
但是,为此您可能还需要使用自定义相等比较器。
public class DistinctItemComparer : IEqualityComparer<string>
{
public bool Equals(string x, string y)
{
return y.ToLower().Split().Any(c => x.ToLower().Contains(c));
}
public int GetHashCode(string obj)
{
return 1;
}
}
在这里查看结果:
答案 2 :(得分:-1)
如果唯一的目的是删除冗余元素。然后您可以尝试以下方法:
string [] arra = new string[] {"Financial banking", "mobile application", "customer account opening", "financial", "banking", "mobile", "application", "account banking"};
var elementsToRemove = new string[]{"financial", "banking", "mobile", "application", "account banking"};
var newArray = arra.Except(elementsToRemove).ToArray();
您将需要引入System.Ling
名称空间以访问Except
方法。