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

时间:2014-09-19 06:36:24

标签: c#

我正在尝试将字符串的前两个字符仅输出到列表框中,

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

lsBox.Items.Add(output.ToString());

我做错了什么? 当我想要“1 G”

时,它会输出“1 2”

2 个答案:

答案 0 :(得分:4)

由于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) overload,例如:

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"

答案 1 :(得分:0)

以下内容可能不如Soner在您的案例中的答案那么实用,但可能有助于了解,例如:如果你想玩string.Format():

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