C#程序,用于计算有多少字符串与列表中的这些字符串具有相同的第一个和最后一个字符

C#程序,用于计算有多少字符串与列表中的这些字符串具有相同的第一个和最后一个字符,c#,string,list,C#,String,List,我需要编写一个程序来计算字符串的数量,其中字符串长度为2或更多,并且第一个和最后一个字符与字符串列表中的相同 [“人”、“桌子”、“橙色”、“黄色”、“胡萝卜”、“菠萝”] 例如: 输入:“pe”,结果-2 -和“人”和“菠萝”一样 现在我这样做了,它搜索第一个和最后一个字符是否相同: List<string> stringsList = new List<string> { "people", "desk", "orange", "yellow", "c

我需要编写一个程序来计算字符串的数量,其中字符串长度为2或更多,并且第一个和最后一个字符与字符串列表中的相同 [“人”、“桌子”、“橙色”、“黄色”、“胡萝卜”、“菠萝”]

例如: 输入:“pe”,结果-2 -和“人”和“菠萝”一样

现在我这样做了,它搜索第一个和最后一个字符是否相同:

        List<string> stringsList = new List<string> { "people", "desk", "orange", "yellow", "carrot", "pineapple"};

        int count = 0;

        foreach (var c in stringsList)
        {
            if (c.Length > 1 && c[0] == c[-1])
            {
                count += 1;
            }
        }
        Console.WriteLine(count);
List stringsList=新列表{“人”、“桌子”、“橙色”、“黄色”、“胡萝卜”、“菠萝”};
整数计数=0;
foreach(stringsList中的变量c)
{
如果(c.Length>1&&c[0]==c[-1])
{
计数+=1;
}
}
控制台写入线(计数);

您可以为此使用linq。所以你需要

  • 按长度过滤
  • 将第一个字母与输入进行比较
  • 将最后一个字母与输入进行比较
代码如下所示:

List<string> stringsList = new List<string> { "people", "desk", "orange", 
    "yellow", "carrot", "pineapple" };

int count = 0;
var input = "pe";
count = stringsList.Where(s => s.Length > 2 
            &&  s[0] == input[0] 
            && s[s.Length - 1] == input[1])
            .Count();
List stringsList=新列表{“人”、“桌子”、“橙色”,
“黄色”、“胡萝卜”、“菠萝”};
整数计数=0;
var input=“pe”;
count=stringsList。其中(s=>s.Length>2
&&s[0]==输入[0]
&&s[s.Length-1]==输入[1])
.Count();
尝试下面的答案:

   //I'll let you input however you want to. Probably use console.ReadLine();
    string input = Console.ReadLine();
    int count;
    List<string> stringsList = new List<string> { "people", "desk", "orange", "yellow", "carrot", "pineapple"};

            foreach (string item in stringsList)
            {
                if (input.Length > 1 && item.Length > 1)
                {
                    if(input[input.Length - 1] == item[item.Length - 1])
                    {
                        //Same Last character
                        if(input[0] == item[0])
                        {
                            //Same first character
                            count += 1;
                        }
                    }
                }
            }
            Console.WriteLine(count);
//我会让您随意输入。可能使用console.ReadLine();
字符串输入=Console.ReadLine();
整数计数;
List stringsList=新列表{“人”、“桌子”、“橙色”、“黄色”、“胡萝卜”、“菠萝”};
foreach(stringsList中的字符串项)
{
if(input.Length>1&&item.Length>1)
{
如果(输入[input.Length-1]==项目[item.Length-1])
{
//最后一个字符
如果(输入[0]==项目[0])
{
//相同的第一个字符
计数+=1;
}
}
}
}
控制台写入线(计数);

您可以借助Linq进行查询:

如果您使用的是C#8和.Net Core 3,那么可以使用新的“index from end”操作符获取字符串的最后一个字符,从而在某种程度上简化代码

例如,字符串
str
的最后一个字符由
str[^1]
给出

因此,您可以使用Linq
Count()
操作符对长度>=2的所有字符串进行计数,其中第一个和最后一个字符与目标匹配;例如:

using System;
using System.Collections.Generic;
using System.Linq;

namespace CoreConsole
{
    public static class Program
    {
        static void Main()
        {
            List<string> stringsList = new List<string> { "people", "desk", "orange", "yellow", "carrot", "pineapple" };

            string search = "pe";

            int n = stringsList.Count(str => 
                str.Length >= 2
                && str[ 0] == search[0] 
                && str[^1] == search[1]);

            Console.WriteLine(n);
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
命名空间核心控制台
{
公共静态类程序
{
静态void Main()
{
List stringsList=新列表{“人”、“桌子”、“橙色”、“黄色”、“胡萝卜”、“菠萝”};
字符串搜索=“pe”;
int n=stringsList.Count(str=>
str.长度>=2
&&str[0]==搜索[0]
&&str[^1]==搜索[1]);
控制台写入线(n);
}
}
}

谢谢,我就是这么做的:

        foreach (var c in stringsList)
        {
            if (c.Length > 1 && c[0] == input[0] && c[c.Length-1] == input[1])
            {
                count += 1;
            }
        }
C#数组不支持负索引。如果需要最后一个字符,请使用字符串长度减去1。但这段代码并不是问题描述的那样。您正在比较单词的第一个字符和最后一个字符,而不是两个字符“pe”。
using System;
using System.Collections.Generic;
using System.Linq;

namespace CoreConsole
{
    public static class Program
    {
        static void Main()
        {
            List<string> stringsList = new List<string> { "people", "desk", "orange", "yellow", "carrot", "pineapple" };

            string search = "pe";

            int n = stringsList.Count(str => 
                str.Length >= 2
                && str[ 0] == search[0] 
                && str[^1] == search[1]);

            Console.WriteLine(n);
        }
    }
}
        foreach (var c in stringsList)
        {
            if (c.Length > 1 && c[0] == input[0] && c[c.Length-1] == input[1])
            {
                count += 1;
            }
        }