替换不在数组中的所有字符

时间:2015-01-22 16:03:23

标签: c# string replace

我想问一下如何删除字符串中不存在的字符串中的所有字符。

我可以使用for循环来检查每个字符,但我需要一些性能更好的东西,因为应用程序必须处理多个(最多~200个)大文件。 1个字符串= 1个文件内容

2 个答案:

答案 0 :(得分:3)

一种选择是使用LINQ:

var s1 = "hello world";
var s2 = "abcdefghijklmno";

var s3 = new String((from c1 in s1.ToCharArray()
                     join c2 in s2.ToCharArray() on c1 equals c2
                     select c1).ToArray());

Console.WriteLine(s3); // helloold

使用LINQ的优点是你可以stream the data不必将整个文件加载到内存中。

答案 1 :(得分:0)

另一种方法是使用正则表达式:

var s1 = "hello world";
var s2 = "abcdefghijklmno"; 

var s3 = Regex.Replace(s1, "[^" + s2 + "]", "");

Console.WriteLine(s3); // helloold

如果您想要所有字母字符,可以将s2设置为"a-z""A-Z""a-zA-Z"