如何从字符串中删除一系列单个字母?

时间:2019-02-23 02:50:46

标签: c#

尝试使用C#逻辑,尝试构建一个程序,用户在该程序中输入字符串,然后可以选择从该字符串中删除哪个字母。

Console.WriteLine("Please enter a string of letters");
string input = Console.ReadLine();
Console.WriteLine("please enter letters you would like removed");

char removedLetters = Convert.ToChar(Console.ReadLine());

foreach (char letter in input)
{
    Console.WriteLine(input.Replace(removedLetters,' ').ToLower());
}

这可行,但不完全可行。我将摆脱字符,但仅当以与原始输入相对应的特定方式编写时才可以。

例如helloworld->删除l =欠d

但是helloworld->删除elo =失败。

有人可以分享一些知识吗?真的想提高逻辑水平,很高兴我能做到这一点,只需要一点指导即可。

干杯

安迪

2 个答案:

答案 0 :(得分:0)

不确定您要如何处理重复项,但C#具有可在数组上使用的Except运算符。因此,将两个字符串都转换为数组,类似的东西应该可以工作...

        Console.WriteLine("Please enter a string of letters");
        string input = Console.ReadLine();
        char[] input_array = input.ToArray();

        Console.WriteLine("please enter letters you would like removed");
        string removedLetters =Console.ReadLine();
        char[] remove_array = removedLetters.ToArray();

        char[] leftover_array = input_array.Except(remove_array).ToArray();
        Console.WriteLine(new string(leftover_array));

答案 1 :(得分:0)

像以前这样扩展Jasen的评论...

        Console.WriteLine("Please enter a string of letters");
        string input = Console.ReadLine();
        List<char> input_array = input.ToList();

        Console.WriteLine("please enter letters you would like removed");
        string removedLetters = Console.ReadLine();
        char[] remove_array = removedLetters.ToArray();

        for (int k = 0; k < remove_array.Count(); k++)
        { input_array.RemoveAll(r=>r== remove_array[k]);  }

        Console.WriteLine(new string(input_array.ToArray()));

再次使用Linq(在本例中为RemoveAll)使繁重的工作自动化。我尚未测试这些工具的效率如何,它们是快速,简单的解决方案,不一定是最有效的。