这个将元音更改为$的C项目如何将其转换为C#?

时间:2019-02-17 00:17:43

标签: c#

这不是一个好奇心。昨天,我谈到了这个旧帖子,并开始在C#中玩它。这是原始的发帖表格2011(How to change vowels in a string to a symbol?)。

我更改了一些代码以及一个计数器,以计算单词中的总字母数。我被卡在if语句上。我知道该程序可能没有任何实际用途,但是我正在尝试学习C#字符串操作。

Console.WriteLine("Enter a word.");
        string userWord = Console.ReadLine();
        Console.WriteLine();
        Console.WriteLine("You wrote {0}", userWord);
        Console.WriteLine();

        userWord.ToLower();
        char[] wordArray = userWord.ToArray();


        for (int i = 0; i < wordArray.Length; i++)
        {
            string theLetter = userWord.Substring(i, 1);

            theLetter = theLetter.ToLower();

        if (wordArray[i] == 'a' || wordArray[i] == 'e' || wordArray[i] == 'i' || wordArray[i] == 'o' || wordArray[i] == 'u')
        {
                wordArray[i] = '$';

        }

            string rebuilt = new string(wordArray);

            Console.WriteLine("Your word is now: {0}", rebuilt);
            Console.WriteLine("The total number of letters in your word is {0}", userWord.Length);

        }
        Console.ReadLine();

我只想将元音更改为$或任何其他字母或符号,然后计算单词中的数字。

1 个答案:

答案 0 :(得分:1)

您链接到的帖子中C程序的第一个问题是,它仅将小写的元音更改为“ $”,而不更改为大写的元音。第二个问题是C#中的字符串是不可变的,您已经通过将单词更改为数组,对其进行修改并从修改后的数组中创建新字符串来解决此问题。

将所有元音转换为'$'的方法可能如下所示:

public static string VowelsToSymbol(string input)
{
    if (string.IsNullOrWhiteSpace(input)) return input;
    var work = new char[input.Length];
    for (int i = 0; i < work.Length; i++)
    {
        var c = input[i];
        switch (c)
        {
            case 'A': case 'E': case 'I': case 'O': case 'U':
            case 'a': case 'e': case 'i': case 'o': case 'u':
                work[i] = '$'; break;
            default:
                work[i] = c; break;
        }
    }
    return new string(work);
}

效率较低,但在显示意图(正在完成)而不是机制(如何完成)方面表现更好:

private static char OneVowelToSymbol(char c)
{
    switch (c)
    {
        case 'A': case 'E': case 'I': case 'O': case 'U':
        case 'a': case 'e': case 'i': case 'o': case 'u':
            return '$';
        default:
            return c;
    }
}

public static string VowelsToSymbolLinq(string input)
{
    return string.IsNullOrWhiteSpace(input) ? input :
        new string(input.Select(OneVowelToSymbol).ToArray());
}

如果您想允许带重音符号的字符(或者其他可能用英语以外的其他语言来表示元音的字符)的话,事情很快就会变得很丑陋,您最好使用其他方法(在互联网上搜索“ “ .NET” isvowel'查找示例)。