拾取一个字符并用部分反转的代码输出整个单词问题

问题描述 投票:0回答:1

我在字符串“ Alena有两只手”中分配了一个字符(数字),如果它是单词中的字符,则写出整个单词。

我在字母前后写出了字符,直到它击中了空格,点或数组的第一个字符,但部分字符被反转了,我不确定如何在此代码中反转它。

我选择了“ num = 2”,所以用char'e',所以我想取回“ Alena”。我尝试过此

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”以使其起作用,但是我很迷茫。我想我知道基本反转的工作原理,但不确定在这种情况下如何使用它。或者,如果您有使用其他方法制作的方法,我也没有问题要重新制作。

如果可能,不使用正则表达式,则进行拆分和区分。

谢谢!

c# char reverse
1个回答
0
投票

我不确定您要使用该循环做什么,但是如果您只是尝试获取以空格作为分隔符的字符串中的第一个单词,该单词与字符串中特定位置的字符匹配,那么您可以使用以下linq语句

  1. 用空格作为分隔符分割字符串
  2. 获取具有您要搜索的字符的第一个单词
  3. 返回找到的单词,如果找不到则返回null。
    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
© www.soinside.com 2019 - 2024. All rights reserved.