c# - 接受字符串输入并删除出现一定次数的所有字符的函数

标签 c# asp.net string function dictionary

我这里有一个词“angoora” 'a' 和 'o' 出现 2 次 如果用户输入是 2 那么输出应该是 "ngr"函数应该删除 a 和 o 因为它在一个字符串中出现了 2 次。如果用户输入 3 那么输出应该是“angoora”,因为没有字符出现 3 次。

我正在这样做,但我认为这不是正确的方法,因为它没有引导我实现我的目标,我们将不胜感激任何帮助。

public static SortedDictionary<char, int> Count(string stringToCount)
{
    SortedDictionary<char, int> characterCount = new SortedDictionary<char, int>();

    foreach (var character in stringToCount)
    {
        int counter = 0;
        characterCount.TryGetValue(character, out counter);
        characterCount[character] = counter + 1;
    }

    return characterCount;
}

最佳答案

您可以使用 LINQs GroupBy 来查找每个字符出现的次数。然后删除那些出现次数你想要的。像这样

public static string RemoveCharactersThatOccurNumberOfTimes(string s, int numberOfOccurances)
{
    var charactersToBeRemoved = s.GroupBy(c => c).Where(g => g.Count() == numberOfOccurances).Select(g => g.Key);
    return String.Join("", s.Where(c => !charactersToBeRemoved.Contains(c)));
}

关于c# - 接受字符串输入并删除出现一定次数的所有字符的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51593197/

相关文章:

asp.net - 如何从网页将大文件上传到 Azure blob

c - snprintf 和 strncat 的执行速度如何比较?

javascript - 为什么任意放置在字符串中的空终止符不会终止它?

c# - 64 位 Windows 上的 P/Invoke 是否需要与 32 位 Windows 不同的签名?

c# - 如何通过删除 ASP.Net MVC 5 中的设置访问器使属性只读

c# - -1 在 C# 列表的索引中

asp.net - 如何更新另一个更新面板中的控件?

c# - 如何在 ASP.NET MVC Web 应用程序中使用 log4net 异步登录而不用尽所有可用线程?

java - String.split() 的副作用,还是正则表达式错误?

c# - 调用线程无法访问此对象,因为另一个线程拥有它 - BackgroundWorker 错误