2013-04-08 2 views
-1

У меня есть строка примерно такая 1234ABCD-1A-AB У меня есть разделитель в строке [] separator, я зацикливаю до длины строки. Я хочу получить 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 раза из-за i am loop основан на разделителе, и у меня есть 2 разделителя в моей строке.

позвольте мне объяснить:

У меня есть цикл для сепаратора, который будет выполняться только 2 раз, потому что я 2 Сепаратор один является девятым положение и другой является четырнадцатым полагание, внутри этого цикла я разделив на подстроки на сепараторе

string[] test1 = test.Split("'" + separator+ "'"); 

в моем следующем шаге я передаю одну строковое значение для следующего процесса, как этот

string temp = test1[i].ToString(); 

с этим я получаю только 2 строки то есть 1234ABCD и 1A Я хочу получить третье значение также внутри цикла. Поэтому я решил взять подстроку, а не использовать split.

вывод должен быть:

first time: 1234ABCD

second time: 1A

third time: AB

+0

Правки на вопрос не ясны. Чего вы пытаетесь достичь? –

ответ

0

Я только отсутствующий индекс

string tempVar = test.Substring(0, test.IndexOf(separator[0].ToString())); 
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). 
} 
0
string[] items = str.Split(new char[] { '-' }); 
+0

Если я буду использовать split, то как мне получить третье значение, если я передам индекс цикла 'string temp = test1 [i] .ToString(); – Rocky

+0

Я дал некоторые объяснения, пожалуйста, проверьте – Rocky

+0

Все еще непонятно. Попробуйте отправить свои входные данные и весь код. и что такое сделка с разделителем «+» + «'» (часть {"'"})? –

0

Вы можете использовать String.Split метод

Возвращает строковый массив, содержащий подстроки этот экземпляр , которые ограничены элементами указанной строки o r 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.

2

Вы можете использовать Split с вашим разделителем '-', а затем получить доступ к возвращенному string[].

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

Demo

+0

+1 Отлично, никогда не думал делать так – Steve

+0

Woharey! Я никогда раньше не использовал «ElementAtOrDefault». Это круто Тим! +1 конечно .. –

+0

@Tim: Пожалуйста, проверьте мои обновления qus. – Rocky

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

+0

Пожалуйста, уточните мой обновленный вопрос – Rocky

+0

Downvoter позаботится прокомментировать? @Rocky вам нужно четко определять свои требования. – DGibbs

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); 
Смежные вопросы