Как получить возвращаемое значение изнутри для / если - PullRequest
0 голосов
/ 07 декабря 2018

Я искал в интернете что-то вроде «вернуть [этот код в следующую скобку за пределами этого]», но мне не повезло.Visual Studio говорит, что если я помещаю возврат внутри «если», это «хорошо», но он не возвращает значение в вызов функции, но я не могу поместить возвращение в вызов функции, потому что он говорит, что строка несуществовать.

Цель этой функции - преобразовать гласные из введенного пользователем ввода в дефисы / тире.Я не могу использовать .Replace (домашнее задание).Извините, если этот код на самом деле не работает или что-то в этом духе, я полагаюсь на его тестирование в Visual Studio, поэтому, если есть ошибки, я не могу его запустить, но похоже, что он должен делать то, что я хочу из того, что я прочитал.

public static string ReplaceVowels(string strInput) 
{
    char[] chars = strInput.ToCharArray();

    for (int i = 0; i < chars.Length; i++) 
    {
        if (chars[i] == 'a' || chars[i] == 'e' || chars[i] == 'i' || chars[i] == 'o' || chars[i] == 'u' || chars[i] == 'y') 
        {
            chars[i] = '-';
            string strReformed = new string(chars);
        }
    }
    return strReformed;
}

1 Ответ

0 голосов
/ 07 декабря 2018

Просто переместите strReformed вниз, за ​​пределы циклов (поскольку это нужно сделать только один раз, после того, как все символы были изменены):

public static string ReplaceVowels(string strInput) {
    char[] chars = strInput.ToCharArray();

    for (int i = 0; i < chars.Length; i++) {
        if (chars[i] == 'a' || chars[i] == 'e' || chars[i] == 'i' || chars[i] == 'o' || chars[i] == 'u' || chars[i] == 'y') {
            chars[i] = '-';
        }
    }

    string strReformed = new string(chars);

    return strReformed;
}

Вы можете увидеть это в действии здесь .

Если вы хотите упростить, вы можете написать это с помощью LINQ довольно легко:

public static string ReplaceVowels(string strInput) {
    char[] vowels = new []{'a', 'e', 'i', 'o', 'u'};

    return string.Concat(
        strInput
            .ToCharArray()
            .Select(chr => vowels.Contains(chr) ? '-' : chr)
    );
}
...