如何获得子串

时间:2013-04-08 10:20:59

标签: c# winforms substring

我有一个像这样的字符串1234ABCD-1A-AB我在string []分隔符中有分隔符,我循环到字符串的长度。我想得到substring。在循环内我写下代码

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();

有了这个我只得到2个字符串1234ABCD1A我想在循环中得到第3个值。所以我想要使用子串而不是使用split。

输出应该是:

first time: 1234ABCD

second time: 1A

third time: AB

7 个答案:

答案 0 :(得分:2)

使用拆分功能:

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

然后:

s[0] == "1234ABCD"
s[1] == "1A"
s[2] == "AB"

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

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).
}

答案 1 :(得分:2)

您可以将Split与分隔符'-'一起使用,然后访问返回的string[]

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

Demo

答案 2 :(得分:0)

string[] items = str.Split(new char[] { '-' });

答案 3 :(得分:0)

您可以使用String.Split方法

  

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

string s = "1234ABCD-1A-AB";
string[] items = s.Split('-');

for(int i = 0; i < items.Length; i++)
  Console.WriteLine("Item number {0} is: {1}", i, items[i]);

输出将是;

Item number 0 is: 1234ABCD
Item number 1 is: 1A
Item number 2 is: AB

这是DEMO

答案 4 :(得分:0)

通过String.Split()非常简单:

string t = "1234ABCD-1A-AB";
string[] tempVar = t.Split('-');

foreach(string s in tempVar)
{
     Console.WriteLine(s);
}
Console.Read();

打印:

1234ABCD 1A AB

答案 5 :(得分:0)

您可以使用String.Split()

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);

答案 6 :(得分:0)

我只是错过了索引

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