如何获取列表中字符的位置值?

时间:2017-07-22 22:20:50

标签: c#

我已经尝试了几个小时但似乎无法解决这个问题,使用C#我试图输出用户输入的字符串中每个字符的位置(字母表中)。

我有一个列表(不是数组)拿着这个叫做字母的字号:

"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"

然后我正在运行for循环

for (int i = 0; i < text.Length; i++)
{
    int value = alphabet.IndexOf(Convert.ToString(text[i]));
    textBox3.Text += (value);
}

其中字母表是上面显示的列表,而text是用户输入的字符串。那么它应该在alphabet中搜索text[i]中定义的特定字母的位置吗?

相反,它只是为每个循环输出值0,任何帮助?

3 个答案:

答案 0 :(得分:0)

我的测试应用程序显示您的代码确实有效。你确定text var的外壳是否符合预期?奇怪的是,如果你的列表中没有字符,你就会在你的文本框中得到#34; -1就好像你正在发送一个字符串一样&#34; aaaaaaaaaa&#34;虽然是text参数。无论如何,这是证据:

using System;
using System.Collections.Generic;

namespace ConsoleApp
{
    class Program
    {
        static List<string> alphabet = 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"
        };
        static void Main(string[] args)
        {
            string text = "aaaaaaaaaaaaaaa";
            for (int i = 0; i < text.Length; i++)
            {
                int value = alphabet.IndexOf(Convert.ToString(text[i]));
                Console.Write(value);
            }
            Console.ReadLine();
        }
    }
}

输出:

0000000000000

答案 1 :(得分:0)

您的代码似乎工作得很好。执行以下代码 - 代码的略微修改版本 - 将值19,4,18,19,18,19,17,8,13,6分配给res。

var text = "teststring";

var alphabet = 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" };

var res = "";

foreach (char c in text)
{
    int value = alphabet.IndexOf(c.ToString());
    res += (value) + ",";
}

或者你可以这样做:

var res = string.Join(",", text.Select(c => alphabet.IndexOf(c.ToString()).ToString()));

答案 2 :(得分:0)

试试这段代码:

using System.Linq;

...

var chars = new []
{
    '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'
}.ToList();

var text = "hello";
var ids = text.Select(x => chars.IndexOf(x));
var result = string.Join(",", ids);

result将是“7,4,11,11,14”