c#字符串中的子字符串

时间:2015-02-17 09:13:04

标签: c# substring

我的字符串值在下面,

string value = "034 TH4493";

在第一面,

var result = value.Substring(2,value.Length - 2);

在第二方面,

var result2 = value.Substring(0, 2);

result1 必须

"34TH4493" 

result2 必须

34

然而它不适合我,我无法解决问题。我是否需要使用其他解决方案或上述代码中缺少的内容?

感谢。

4 个答案:

答案 0 :(得分:1)

string v2 = value.TrimStart('0');            

var result1 = v2.Replace(" ","");

var result2 = v2.Split(' ')[0];

答案 1 :(得分:1)

var result = value.Substring(2, value.Length - 2);

你实际上已经告诉它从索引位置2(“034 TH4493”中的4)开始,然后添加与“034 TH4493”(10,空间计数)减去2的长度一样多的字符,等于8,因此:“4 TH4493”。

你想要的是告诉它通过替换它来删除空间,然后从索引1开始,以便丢弃索引0处的“0”,然后计算除了你之外的所有其他字符忽略:

var result = value.Replace(" ", "").Substring(1, value.Length - 2); // -2 because "value" holds both the space and the first 0, rather than just the 0

正如您现在可能想象的那样,当您真正想要var result2 = value.Substring(0, 2);时,var result2 = value.Substring(1, 2)实际上正在抓取“03”(索引0,两个字符)。

或者,你可以拆分字符串,然后抓住你想要的任何东西:

var result = value.Replace(" ", "").Substring(1, value.Length - 2);

var values = value.Split(' '); // Split at the space character
var result2 = values[0];
// or
var result2 = value.Split(' ')[0];

在这些情况下,你不确定发生了什么,它有助于添加断点(F9键和默认设置),因此当达到该行代码时应用程序暂停,你可以探索当前将光标悬停在变量上,或选中“Locals”选项卡。

编辑:我结束了你想要的结果和结果2的值,现在应该修复......

答案 2 :(得分:0)

你可以找到它们;

var result1 = value.Substring(1).Replace(" ", "");
var result2 = value.Substring(1, 2);

需要更换空白区域,因为它不会神奇地消失。如果您希望将"34TH4493"代替34TH4493作为字符串,则可以将其格式化为;

result1 = string.Format("\"{0}\"", result1);

答案 3 :(得分:0)

对于字符串,您必须考虑第一个字符的索引 而不是1

第一种情况

所以第一个结果从第3个字符开始,但是你想从第二个字符到起始索引将是1,结束索引将比长度小1。

var result = value.Substring(1,value.Length - 1);

第二种情况

第二个你从零开始,并希望从第二个字符开始,所以开始索引应该是1而不是0

var result2 = value.Substring(1, 2);

您必须阅读Substring的文档,其中startIndex是"此实例中子字符串从零开始的字符位置"