我需要用用户输入中的“-”替换字符串中的所有元音

时间:2019-01-27 22:29:54

标签: c#

我正在寻找指导,而不是确切的答案,因为这个问题是针对家庭作业的,我必须学习!无论如何,我不能使用.Replace方法,但是必须用'-'破折号代替元音,然后将带有破折号的原始输入输出给用户。到目前为止,这就是我所拥有的,但是我现在不知道如何添加破折号。我还必须在下面创建的另一种方法中执行此操作。

static void Main(string[] args)
    {





        //problem #2 Redacted Files///////////////////////////////////////////////////////////////////////////
        Console.WriteLine();
        Console.WriteLine("Hello please provide a short statement we can work with!");
        string normalString = Console.ReadLine();
        while (string.IsNullOrWhiteSpace(normalString)) 
        {
            Console.WriteLine("Please enter in an amount");
            normalString = Console.ReadLine();
        }
        EncryptingMethod(normalString);


    }



    //Problem #2 method///////////////////////////////////////////////////////
    public static string EncryptingMethod(string normalString)
    {
        //List <char> charVowelList = new List<char>() { 'a', 'e', 'i', 'o', 'u', 'y','A','E','I','O','U','Y'};
        char[] normalCharArray = normalString.ToCharArray();
        for (int i = 0; i < normalCharArray.Length; i++)
        {
            if (normalCharArray[i] == 'a' ||
                normalCharArray[i] == 'e' ||
                normalCharArray[i] == 'i' ||
                normalCharArray[i] == 'o' ||
                normalCharArray[i] == 'u' ||
                normalCharArray[i] == 'y' ||
                normalCharArray[i] == 'A' ||
                normalCharArray[i] == 'E' ||
                normalCharArray[i] == 'I' ||
                normalCharArray[i] == 'O' ||
                normalCharArray[i] == 'U' ||
                normalCharArray[i] == 'Y')
            {
                char[] normalEncryptArray = normalCharArray.Insert('-', normalCharArray[i]);
            }
        }


        return normalString;
    }
}

}  我底部的.Insert无法使用,甚至无法运行该代码,但到目前为止,它是我尝试过的多种格式之一。

3 个答案:

答案 0 :(得分:2)

您自己做了很多好事。要了解为什么您的代码不起作用,请查看以下行。

char[] normalEncryptArray = normalCharArray.Insert('-', normalCharArray[i]);

char数组没有插入方法。这里需要做的是替换现有字符,您需要进行如下修改。

normalCharArray[i] = '-';

您需要在方法中进行的第二次更改是最终归还声明。

return normalString;

请记住,所有更改现在都在char数组normalCharArray中。这就是您需要返回的那个。由于期望的返回值是字符串,因此您需要将数组转换为字符串。您可以使用字符串类的构造函数来实现。

 return new string(normalCharArray);

您的整个方法就像现在这样。

 public static string EncryptingMethod(string normalString)
    {
        char[] normalCharArray = normalString.ToCharArray();
        for (int i = 0; i < normalCharArray.Length; i++)
        {
            if (normalCharArray[i] == 'a' ||
                normalCharArray[i] == 'e' ||
                normalCharArray[i] == 'i' ||
                normalCharArray[i] == 'o' ||
                normalCharArray[i] == 'u' ||
                normalCharArray[i] == 'y' ||
                normalCharArray[i] == 'A' ||
                normalCharArray[i] == 'E' ||
                normalCharArray[i] == 'I' ||
                normalCharArray[i] == 'O' ||
                normalCharArray[i] == 'U' ||
                normalCharArray[i] == 'Y')
            {
                normalCharArray[i] = '-';
            }
        }


        return new string(normalCharArray);
    }

顺便说一句,您可以在此处进行一些改进。例如,

通过以下行可以改善整个if条件

if ("aeiouyAEIOUY".Contains(normalCharArray[i])) 
{
  normalCharArray[i] = '-';
}

答案 1 :(得分:0)

您可以直接替换原始char[]数组中的字符:

normalCharArray[i] = '-';

此外,如注释中所建议,您可以使用if方法简化大的string.Contains,该方法检查字符串是否包含给定字符。

char[] normalCharArray = normalString.ToCharArray();
for (int i = 0; i < normalCharArray.Length; i++)
    if ("aeiouyAEIOUY".Contains(normalCharArray[i]))
        normalCharArray[i] = '-';

return new string(normalCharArray);

答案 2 :(得分:0)

如果不明确排除正则表达式,也可以使用正则表达式:

        //Problem #2 method///////////////////////////////////////////////////////
        public static string EncryptingMethod(string normalString)
        {
            string vowels = "[aeiouyAEIOUY]"; //sets the letters you need to replace
            string replacement = "-";//what to replace the vowels with

            Regex rep = new Regex(vowels); //initiate the Regex

            string updatedString = rep.Replace(normalString, replacement); //rep will now look up for each character in VOWELS and update it with REPLACEMENT

            return updatedString;
        }