I';我试图让字符串的前两个字符只在列表框中输出

本文关键字:字符 两个 输出 列表 字符串 | 更新日期: 2023-09-27 18:22:46

我正试图让字符串的前两个字符只在列表框上输出

string vin = "1GCHC24U83E614546";
string output = string.Format("{0} {1}", 
                              (vin.Length - 16).ToString(), 
                              (vin.Length - 15).ToString());
lsBox.Items.Add(output.ToString());

我做错了什么?当我想要"1G"时,它会输出"12"

I';我试图让字符串的前两个字符只在列表框中输出

因为vin包含17个字符,所以vin.Length等于17,vin.Length - 16等于1vin.Length - 15将是2

所以,你的代码相当于:

string output = string.Format("{0} {1}", 
                              1.ToString(), 
                              2.ToString());

这就是为什么字符串表示将是"1 2"。不是"1 G"。在这个过程中,你不会得到字符串的前两个字符,你会得到两个整数的字符串表示

您需要使用String.Substring(Int32, Int32)过载,如:

string vin = "1GCHC24U83E614546";
string output = vin.Substring(0, 2); // output will be "1G"

如果你想在string.Format中使用它们,你可以简单地做;

string output = string.Format("{0} {1}", 
                              vin[0], 
                              vin[1]); // output will be "1 G"

在您的情况下,以下答案可能不如Soner的答案实用,但了解一下可能会很有用,例如,如果您想玩字符串。格式化():

string vin = "1GCHC24U83E614546";
string output = string.Format("{0} {1}", 
                              vin.First(),  // Linq syntax to take first char
                              vin.Skip(1).First()); // take the second char