gpt4 book ai didi

c# - 使用 LINQ lambda 替换字符串中数组中的字符

转载 作者:行者123 更新时间:2023-11-30 19:24:25 25 4
gpt4 key购买 nike

我有一个包含不允许字符的字符串数组:

public static string[] IllegalCharacters = { "\"", "/", "\\", "[", "]", ":", "|", "<", ">", "+", "=", ";", ",", "?", "*", "\'", "@", ".", ":", "^", "¨", "å", "ä", "ö", "Å", "Ä", "Ö" };

我可以用这样的 foreach 一个接一个地删除字符:

private string RemoveIllegalCharactersFromString(string text)
{
foreach (string illegalCharacter in IllegalCharacters.IllegalCharacters)
{
text = text.Replace(illegalCharacter, "");
}
return text;
}

我的问题是我可以改用 linq lambda 表达式来删除该方法吗?

我现在用的是什么:

public static HashSet<char> IllegalCharacters = new HashSet<char>(new char[] { '\"', '/', '\\', '[', ']', ':', '|', '<', '>', '+', '=', ';', ',', '?', '*', '\'', '@', '.', ':', '^', '¨','\'' });

var t = sourceText.Where(c => !IllegalCharacters.Contains(c)).ToArray();
var result = new string(t);
return result;

最佳答案

我建议将 IllegalCharacters 更改为 char 集合(非法字符应该是 characters,对吧?),例如

  public static HashSet<char> IllegalCharacters = new HashSet<char>(
new char[] { '"', '\\', ..., 'Ä', 'Ö' });

因此您可以放置​​一个明显的 Linq:

  string source = "123:+-456";

string result = String.Concat(source
.Where(c => !IllegalCharacters.Contains(c)));

关于c# - 使用 LINQ lambda 替换字符串中数组中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37408333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com