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

Replace all characters not in array

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

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

一种选择是使用 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不必将整个文件加载到内存中。

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

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"