C# 如何获取子字符串

C# 如何获取子字符串,c#,winforms,substring,C#,Winforms,Substring,我有一个像这样的字符串1234ABCD-1A-AB我在string[]separator中有分隔符,我循环到字符串的长度。我想获取子字符串。在循环内部,我正在编写以下代码 string tempVar = test.Substring(0, test.IndexOf("'" + separator+ "'")); 我也试过这样做 string tempVar = String.Join(",", test.Split(',').Select(s => s.Substring(0, s.I

我有一个像这样的字符串
1234ABCD-1A-AB
我在string[]separator中有分隔符,我循环到字符串的长度。我想获取
子字符串
。在循环内部,我正在编写以下代码

string tempVar = test.Substring(0, test.IndexOf("'" + separator+ "'"));
我也试过这样做

string tempVar = String.Join(",", test.Split(',').Select(s => s.Substring(0, s.IndexOf("'" + separator+ "'"))));
通过使用此选项,我得到的错误索引不应小于0,循环将只运行2次,因为我是基于分隔符的循环,并且我的字符串中有2个分隔符

让我解释一下:

我有一个用于分隔符的循环,它将只执行2次,因为我将使用2个分隔符,一个是第9位,另一个是第14位,在该循环中,我根据分隔符拆分字符串

string[] test1 = test.Split("'" + separator+ "'");
在下一步中,我将为下一个进程传递一个字符串值,如下所示

string temp = test1[i].ToString();
有了这个,我只得到了两个字符串,分别是
1234ABCD
1A
,我还想得到循环中的第三个值。因此,我考虑使用子字符串而不是使用split

输出应为:

第一次:1234ABCD

第二次:1A


第三次:AB

使用拆分功能:

string s = "1234ABCD-1A-AB";
string[] parts = s.Split('-');
然后:


根据现在更新的要求,尝试以下操作:

string input = "1234ABCD-1A-AB";
char separator = '-';

string[] parts = input.Split(separator);

// if you do not need to know the item index:
foreach (string item in parts)
{
    // do something here with 'item'
}

// if you need to know the item index:
for (int i = 0; i < parts.Length; i++)
{
    // do something here with 'item[i]', where i is 
    // the index (so 1, 2, or 3 in your case).
}
string input=“1234ABCD-1A-AB”;
字符分隔符='-';
string[]parts=input.Split(分隔符);
//如果您不需要知道项目索引:
foreach(部分中的字符串项)
{
//在这里用“项目”做点什么
}
//如果您需要了解项目索引:
对于(int i=0;i
您可以使用

返回包含此实例中的子字符串的字符串数组 由指定字符串或Unicode的元素分隔的 字符数组


这是一个.

您可以使用分隔符
'-'
使用
Split
,然后访问返回的
字符串[]

string[] parts = test.Split('-');
string firstPart  = parts[0];
string secondPart = parts.ElementAtOrDefault(1);
string thirdPart  = parts.ElementAtOrDefault(2);

非常简单,通过:

印刷品:

1234ABCD
1A
AB

您可以使用:

您可以将其设置为:

 string firstPart = splitted.FirstOrDefault();
 string secondPart = splitted.ElementAtOrDefault(1);
 string thirdPart = splitted.ElementAtOrDefault(2);

我只是错过了索引

string tempVar = test.Substring(0, test.IndexOf(separator[0].ToString()));

若我将使用split,那个么若我将传递循环`string temp=test1[i].ToString()的索引,那个么如何获得第三个值;我已经解释过了,但还是不清楚。尝试发布您的输入数据和整个代码。那么“'”+分隔符+“'”({“}部分)的处理方式是什么呢?沃哈里!我以前从未使用过
ElementAtOrDefault
。太酷了,蒂姆+1.你对这个问题的修改不清楚。你想达到什么目的?想发表评论吗@Rocky您需要清楚地规划您的需求。
Item number 0 is: 1234ABCD
Item number 1 is: 1A
Item number 2 is: AB
string[] parts = test.Split('-');
string firstPart  = parts[0];
string secondPart = parts.ElementAtOrDefault(1);
string thirdPart  = parts.ElementAtOrDefault(2);
string t = "1234ABCD-1A-AB";
string[] tempVar = t.Split('-');

foreach(string s in tempVar)
{
     Console.WriteLine(s);
}
Console.Read();
string str = "1234ABCD-1A-AB";
string[] splitted = str.Split('-');
/* foreach (string item in splitted)
{
    Console.WriteLine(item);
}*/
 string firstPart = splitted.FirstOrDefault();
 string secondPart = splitted.ElementAtOrDefault(1);
 string thirdPart = splitted.ElementAtOrDefault(2);
string tempVar = test.Substring(0, test.IndexOf(separator[0].ToString()));