Выберите символ и выведите целое слово проблема с обращением части кода - PullRequest
0 голосов
/ 19 января 2020

Я получил задание в строке «Алена имеет 2 руки», выберите символ (num), и, если это символ в слове, напишите слово целиком.

Я выписал символы после и до буквы пока он не коснется ни пробела, ни точки, ни первого символа массива, но часть его будет перевернута, и я не уверен, как перевернуть его в этом коде.

Я выбрал "num = 2", поэтому char 'e' так Я хочу вернуть "Алену". Я попробовал это

static void firstWord(String s1, int num)
{
    char[] sentence = s1.ToCharArray();
    for (int i = 0; i < sentence.Length; i++)
    {
        Console.Write(sentence[i]);
    }
    int y = 0;
    Console.WriteLine("\n");
    for (int s = 0; s < s1.Length; s++)
    {
        if (sentence[num - y] == ' ' || sentence[num - y] == '.' || 
            sentence[num - y] == sentence[0])
        {
            if (sentence[num - y] == sentence[0])
            {
                Console.Write(sentence[0]);
                s = s1.Length;
            }
            continue;
        }
        Console.Write(sentence[num - y]);
        y++;
    }
    int x = 1;
    for (int j = 0; j < x; j++)
    {
        if (sentence[num + x] == ' ' || sentence[num + x] == '.')
        {
            continue;
        }
        Console.Write(sentence[num + x]);
        x++;
    }
}

И вывод «elAna», поэтому мне нужно повернуть «elA» на «Ale», чтобы заставить его работать, но я довольно растерялся. Я думаю, что знаю, как работает реверсивный ход basi c, но не уверен, как его использовать в этом случае. Или, если у вас есть способ сделать это другим способом, у меня нет проблем, чтобы сделать все заново.

Если возможно без регулярных выражений, split и Distinct.

Спасибо!

1 Ответ

0 голосов
/ 19 января 2020

Я не уверен, что вы пытаетесь сделать с этим l oop, но если вы просто пытаетесь получить первое слово в строке с пробелом в качестве разделителя, который соответствует символу в указанном c месте в строке можно использовать следующий оператор linq

  1. Разделить строку пробелом в качестве разделителя
  2. Получить первое слово, содержащее символ, который вы хотите найти
  3. Возвращать найденное слово или ноль, если ничего не найдено.
    static string firstWord(string s1, int num)
    {
        return s1.Split(' ').FirstOrDefault(x => x.Contains(s1.ElementAt(num)));
    }

Вы можете использовать это в своем основном классе следующим образом:

    string input = "Alena has 2 hands";
    Console.WriteLine(firstWord(input, 2));

Выход

Alena
...