C# 一组子字符串,在每个:字符处拆分

C# 一组子字符串,在每个:字符处拆分,c#,datatable,listbox,char,C#,Datatable,Listbox,Char,代码的工作行是: int idNum = Convert.ToInt16(listBox1.SelectedItem.ToString().Split(':')[0]) - 1; 我试过了,成功了。最后,我使用intidnum=(int)Char.GetNumericValue(listBox1.SelectedItem.ToString()[0])-1,虽然我不明白为什么这样做有效,但Convert.ToInt16却不行。或者只是将字符的ASCII值转换为int/没有转换任何内容,因为AS

代码的工作行是:

int idNum = Convert.ToInt16(listBox1.SelectedItem.ToString().Split(':')[0]) - 1; 

我试过了,成功了。最后,我使用
intidnum=(int)Char.GetNumericValue(listBox1.SelectedItem.ToString()[0])-1
,虽然我不明白为什么这样做有效,但
Convert.ToInt16
却不行。或者只是将字符的ASCII值转换为int/没有转换任何内容,因为ASCII值已经是int了?@SpaceOstrich我认为当您使用
Convert
而不是解析-
Convert
时,在这种情况下可能只会执行强制转换,而
Int16.Parse
实际上会解析字符串/char并返回数值。@SpaceOstrich检查编辑后的答案,我添加了来自microsoft的实际代码。为此,在确定问题后,我做了一些更改,现在使用
split
获取字符串的id部分。我将给出我自己的答案和工作代码,以供将来参考。我会将你的答案标记为正确答案,我也希望这里有解决方案。@SpaceOstrich检查我编辑的答案,看看你想处理多个数字的情况。我试过了,它成功了。最后,我使用
intidnum=(int)Char.GetNumericValue(listBox1.SelectedItem.ToString()[0])-1
,虽然我不明白为什么这样做有效,但
Convert.ToInt16
却不行。或者只是将字符的ASCII值转换为int/没有转换任何内容,因为ASCII值已经是int了?@SpaceOstrich我认为当您使用
Convert
而不是解析-
Convert
时,在这种情况下可能只会执行强制转换,而
Int16.Parse
实际上会解析字符串/char并返回数值。@SpaceOstrich检查编辑后的答案,我添加了来自microsoft的实际代码。为此,在确定问题后,我做了一些更改,现在使用
split
获取字符串的id部分。我将给出我自己的答案和工作代码,以供将来参考。我会将您的答案标记为正确答案,我也希望这里有解决方案。@SpaceOstrich检查我编辑的答案,以了解您想要处理多个数字的情况。
int idNum = (int)Char.GetNumericValue(listBox1.SelectedItem.ToString()[0]);
public static short ToInt16(char value) 
{
    // Some validations
    return (short)value;
}
string str = "37abcdef";
string myStrNumber  = Regex.Match(str, @"\d+").Value;

int idNum2;

if (myStrNumber.Length > 0)
    idNum2 = Convert.ToInt32(myStrNumber);
else
{
    // Handle Error
}
string str = "37abcdef";
string myStrNumber = "";

for(int i = 0; i < str.Length; i++)
{
    if (Char.IsNumber(str[i]))
        myStrNumber += str[i];
}

int idNum2;

if (myStrNumber.Length > 0)
    idNum2 = Convert.ToInt32(myStrNumber);
else
{
    // Handle Error
}
int idNum = Convert.ToInt16(listBox1.SelectedItem.ToString()[0].ToString())
int idNum = Convert.ToInt16(listBox1.SelectedItem.ToString().Split(':')[0]) - 1;