c# 字符串中的子串字符
c# Substring characters in a string
我下面有 string 值,
string value = "034 TH4493";
第一面,
var result = value.Substring(2,value.Length - 2);
在第二面,
var result2 = value.Substring(0, 2);
result1 必须是
"34TH4493"
结果2必须是
34
但是它对我不起作用,我无法解决问题。我需要使用其他解决方案还是上面的代码中缺少什么?
谢谢。
您可以找到它们;
var result1 = value.Substring(1).Replace(" ", "");
var result2 = value.Substring(1, 2);
需要更换您的白色 space,因为它不会神奇地 消失。如果您想将 "34TH4493"
而不是 34TH4493
作为 字符串 ,您可以将其格式化为;
result1 = string.Format("\"{0}\"", result1);
您必须考虑第一个字符的 index 是 zero 而不是字符串的 1
。
第一种情况
所以第一个结果从第 3 个字符开始,但您希望从第二个字符到起始索引为 1,结束索引将比长度少一个。
var result = value.Substring(1,value.Length - 1);
第二种情况
对于第二个,您从零开始并希望从第二个字符开始,因此开始索引应该是 1
而不是 0
。
var result2 = value.Substring(1, 2);
您必须阅读 Substring where startIndex 的文档是 "The zero-based starting character position of a substring in this instance"
string v2 = value.TrimStart('0');
var result1 = v2.Replace(" ","");
var result2 = v2.Split(' ')[0];
var result = value.Substring(2, value.Length - 2);
你实际上是在告诉它从索引位置 2(“034 TH4493”中的 4)开始,然后添加与“034 TH4493”(10,space 计数)减 2,等于 8,因此:“4 TH4493”。
你想要的是告诉它通过用什么替换它来删除 space,然后从索引 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);
实际上是在抓取“03”(索引 0,两个字符),而您实际上想要 var result2 = value.Substring(1, 2)
.
或者,您可以拆分字符串,然后抓取您想要的任何内容:
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" 选项卡来查看当前值。
编辑:我最终混淆了你想要的 result 和 result2 的值,现在应该修复了...
我下面有 string 值,
string value = "034 TH4493";
第一面,
var result = value.Substring(2,value.Length - 2);
在第二面,
var result2 = value.Substring(0, 2);
result1 必须是
"34TH4493"
结果2必须是
34
但是它对我不起作用,我无法解决问题。我需要使用其他解决方案还是上面的代码中缺少什么?
谢谢。
您可以找到它们;
var result1 = value.Substring(1).Replace(" ", "");
var result2 = value.Substring(1, 2);
需要更换您的白色 space,因为它不会神奇地 消失。如果您想将 "34TH4493"
而不是 34TH4493
作为 字符串 ,您可以将其格式化为;
result1 = string.Format("\"{0}\"", result1);
您必须考虑第一个字符的 index 是 zero 而不是字符串的 1
。
第一种情况
所以第一个结果从第 3 个字符开始,但您希望从第二个字符到起始索引为 1,结束索引将比长度少一个。
var result = value.Substring(1,value.Length - 1);
第二种情况
对于第二个,您从零开始并希望从第二个字符开始,因此开始索引应该是 1
而不是 0
。
var result2 = value.Substring(1, 2);
您必须阅读 Substring where startIndex 的文档是 "The zero-based starting character position of a substring in this instance"
string v2 = value.TrimStart('0');
var result1 = v2.Replace(" ","");
var result2 = v2.Split(' ')[0];
var result = value.Substring(2, value.Length - 2);
你实际上是在告诉它从索引位置 2(“034 TH4493”中的 4)开始,然后添加与“034 TH4493”(10,space 计数)减 2,等于 8,因此:“4 TH4493”。
你想要的是告诉它通过用什么替换它来删除 space,然后从索引 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);
实际上是在抓取“03”(索引 0,两个字符),而您实际上想要 var result2 = value.Substring(1, 2)
.
或者,您可以拆分字符串,然后抓取您想要的任何内容:
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" 选项卡来查看当前值。
编辑:我最终混淆了你想要的 result 和 result2 的值,现在应该修复了...