我正在寻找指导,而不是确切的答案,因为这个问题是针对家庭作业的,我必须学习!无论如何,我不能使用.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无法使用,甚至无法运行该代码,但到目前为止,它是我尝试过的多种格式之一。
答案 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;
}