我正在尝试将字符串的前两个字符仅输出到列表框中,
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”答案 0 :(得分:4)
由于vin
包含17个字符,vin.Length
等于17,vin.Length - 16
等于1
,vin.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