2015-04-06 5 views
0

Я пытаюсь разбить строку только на две части, где символ разделителя может возникать несколько раз.Как разбить строку на N частей?

Приведенный ниже код не работает, как я не разрешено указывать предельный вариант:

Dim output = input.Split("=", 1) 

Любые идеи?

+0

Да он принимает предельный параметр. https://msdn.microsoft.com/en-us/library/6x627e5f%28v=vs.90%29.aspx –

+0

Но я хочу называть «string.split (« = ») вместо« Split (String, "=", 1) –

+0

Посмотрите на https://msdn.microsoft.com/en-us/library/bb384936.aspx. –

ответ

1

Вы можете использовать перегрузку String.Split(Char[], Int32, StringSplitOptions).

Обратите внимание, что первым параметром является массив Char, а не один символ. Второй параметр позволяет указать максимальное количество подстрок для возврата.

VB.NET

Option Strict On 

Важно: Вы должны всегда иметь strict compiler option набор для На.

Dim input As String = "aaaa=bbbb=cccc=dddd" 
Dim separators As Char() = { "="c } 
Dim count As Integer = 2 
Dim options As StringSplitOptions = StringSplitOptions.RemoveEmptyEntries 
Dim output As String() = input.Split(separators, count, options) 

For Each part As String In output 
    Console.WriteLine(part) 
Next 

C#

string input = "aaaa=bbbb=cccc=dddd"; 
char[] separators = new[] { '=' }; 
int count = 2; 
StringSplitOptions options = StringSplitOptions.RemoveEmptyEntries; 
string[] output = input.Split(separators, count, options); 

foreach (string part in output) 
{ 
    Console.WriteLine(part); 
} 

Это будет возвращать массив, содержащий два элемента:

AAAA
BBBB = сссс = DDDD

+0

Работал! Большое спасибо :) –

+0

Есть еще одна проблема: если input = "parameter = value", все в порядке. Но он input = "parameter =", я получаю исключение IndexOutOfRangeException. –

+0

Конечно, вам нужно проверить, содержит ли строка '='. Просто замените '2' на' If (input.Contains ("="), 2, 1) '. –

Смежные вопросы