2017-07-22 50 views
-1

我一直在嘗試幾個小時,但似乎無法解決這個問題,使用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); 
} 

如果字母是上面所示的列表,文本用戶輸入的字符串。所以它應該在alphabet中搜索text[i]中定義的特定字母的位置吧?

相反,它只是輸出值爲0爲每個循環,有幫助嗎?

+0

確定該文本包含字母表中的任何一個元素? –

+0

'textBox3.Text + =(value);'不編譯。您應該發佈導致問題的實際代碼。 – Slai

回答

0

我的測試應用程序顯示您的代碼實際工作。你確定text var的外殼是否如你所期望的那樣?奇怪的是,如果您的列表中不存在字符,則會在您的文本框中獲得「-1」,就好像您發送的字符串是「aaaaaaaaaa」,但是作爲您的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 
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())); 
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」

相關問題