如何在C#的字符串列表中获取元素位置及字母的字母表序号
在C#中获取List字符串元素的位置及字母表序号
方法一:使用List的IndexOf方法
List<T>自带的IndexOf方法可以直接返回元素在列表中的索引位置(从0开始计数)。因为你需要的是字母表序号(从1开始),拿到索引后加1即可。
完整代码示例
using System; using System.Collections.Generic; class Program { static void Main() { List<string> letters = new List<string> { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; Console.Write("请输入一个字母:"); string input = Console.ReadLine()?.Trim().ToUpper(); if (!string.IsNullOrEmpty(input) && input.Length == 1) { int index = letters.IndexOf(input); if (index != -1) { int alphabetOrder = index + 1; Console.WriteLine($"字母{input}的字母表序号是:{alphabetOrder}"); } else { Console.WriteLine("输入的字母不在列表中"); } } else { Console.WriteLine("请输入有效的单个字母"); } } }
说明
IndexOf返回元素的索引,若元素不存在则返回-1,需先判断返回值是否有效。- 调用
ToUpper()是为了兼容小写输入,确保能匹配列表中的大写元素。
方法二:直接通过字符ASCII值计算(无需List)
针对A-Z的字母场景,不需要维护List,直接利用字符的ASCII码值就能计算序号,效率更高:
using System; class Program { static void Main() { Console.Write("请输入一个字母:"); string input = Console.ReadLine()?.Trim().ToUpper(); if (!string.IsNullOrEmpty(input) && input.Length == 1 && char.IsLetter(input[0])) { int alphabetOrder = input[0] - 'A' + 1; Console.WriteLine($"字母{input}的字母表序号是:{alphabetOrder}"); } else { Console.WriteLine("请输入有效的单个字母"); } } }
说明
- 大写字母'A'的ASCII值为65,'B'为66,以此类推。用输入字符减去'A'得到0开始的偏移量,加1就是从1开始的字母表序号。
char.IsLetter用于校验输入是否为字母,避免非字母输入引发错误。
内容的提问来源于stack exchange,提问作者Tonyey
相关产品推荐
相关产品推荐

