我已经尝试了几个小时但似乎无法解决这个问题,使用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
,任何帮助?
答案 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”