簡體   English   中英

將字符串列表轉換為相應的int C#

[英]Convert string list to corresponding int c#

我正在做一個測驗,並從文本文件中提取了一系列字符串,並將它們添加到列表中,從而進一步將文件信息分為單個字符串。 我的問題是,如何使各個字符串對應一個數值? 例如,A = 1,B = 2,依此類推。

以下代碼描述了列表的創建和元素的添加:

List<string> keyPool = new List<string>();
OpenFileDialog keyLoad = new OpenFileDialog();
        keyLoad.Multiselect = false;

        if (keyLoad.ShowDialog() == DialogResult.OK)
        {
            foreach (String fileName in keyLoad.FileNames)
            {

                key = File.ReadAllText(fileName);

                kLabel.Text = ("Key:" + System.Environment.NewLine);
                k1 = key.Split(new string[] { System.Environment.NewLine }, System.StringSplitOptions.RemoveEmptyEntries)[0];
                keyPool.Add(k1);
                k2 = key.Split(new string[] { System.Environment.NewLine }, System.StringSplitOptions.RemoveEmptyEntries)[1];
                keyPool.Add(k2);
                k3 = key.Split(new string[] { System.Environment.NewLine }, System.StringSplitOptions.RemoveEmptyEntries)[2];
                keyPool.Add(k3);
                k4 = key.Split(new string[] { System.Environment.NewLine }, System.StringSplitOptions.RemoveEmptyEntries)[3];
                keyPool.Add(k4);
                k5 = key.Split(new string[] { System.Environment.NewLine }, System.StringSplitOptions.RemoveEmptyEntries)[4];
                keyPool.Add(k5);
                k6 = key.Split(new string[] { System.Environment.NewLine }, System.StringSplitOptions.RemoveEmptyEntries)[5];
                keyPool.Add(k6);
                k7 = key.Split(new string[] { System.Environment.NewLine }, System.StringSplitOptions.RemoveEmptyEntries)[6];
                keyPool.Add(k7);
                k8 = key.Split(new string[] { System.Environment.NewLine }, System.StringSplitOptions.RemoveEmptyEntries)[7];
                keyPool.Add(k8);
                k9 = key.Split(new string[] { System.Environment.NewLine }, System.StringSplitOptions.RemoveEmptyEntries)[8];
                keyPool.Add(k9);
                k10 = key.Split(new string[] { System.Environment.NewLine }, System.StringSplitOptions.RemoveEmptyEntries)[9];
                keyPool.Add(k10);
            }
        }

怎么做?

一般來說,您正在尋找字典。 在這種情況下,我們使用它來定義字符串和數字之間的映射:

Dictionary<string, int> mapping = new Dictionary<string, int>();
mapping.Add("A", 1);
...

int value = mapping["A"];

如果您只想將前幾個大寫字母轉換為數字,則可以利用ASCII表:

int value = (int)stringValue[0] - (int)'A' + 1;

假設每個“字符串”都是單個字母,例如AB等,則可以設置一個enum並將每個字母解析為合適的枚舉值:

public enum Letter
{
    A = 1,
    B = 2,
    C = 3,
    D = 4,
    E = 5,
    F = 6,
    G = 7,
    H = 8,
    I = 9,
    J = 10
}

您只需要將字符串拆分一次,它將所有值放入一個數組中,就可以foreach數組並建立列表:

List<Letter> keyPool = new List<Letter>();
var letters = key.Split(new string[] { System.Environment.NewLine },
    System.StringSplitOptions.RemoveEmptyEntries);

foreach(var letter in letters)
{
    keyPool.Add((Letter)Enum.Parse(typeof(Letter), letter);
}

要將其轉換為int並使用它,可以將其轉換為:

Letter letter = Letter.A;
int a = (int)letter;

使用一個enum

enum Keys
{
A=1,
B,
C,
 //continue onward
}

轉換為字符串:

string s = Keys.B.ToString();
Keys key = (Keys)Enum.Parse(typeof(Keys), s);

要與int相互轉換:

int i = (int)Keys.B;
Keys keyFromI = (Keys)i;

您無需為字母添加enumdictionary

    static void Main(string[] args)
    {
        string intialString = "abc".ToUpper();
        string numberString = "";

        foreach (char c in intialString)
        {
            numberString += (int)c - 64;
        }

        Console.WriteLine(numberString);
    }

這是清楚的例子。 如果要使用它!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM