2013-09-09 5 views
2

мне нужно разобрать, например, такую ​​строку: «Здравствуйте, меня зовут Борис, [image1.jpg] я люблю пить чай [img2.jpg]»C# строки синтаксического анализа для массива

и я хочу чтобы получить массив строк:

Arr[0] ="Hello, my name is Boris, " 
Arr[1] ="image1.jpg" 
Arr[2] =" i like drinking tea " 
Arr[3] ="img2.jpg" 
+0

Будут ли квадратные скобки всегда там? –

+2

Ну, как это должно быть разделено? У вас есть общий-seperator (как запятая?) – Arran

+0

Не нисходящий, но похоже, что человек посетил эту ссылку, чтобы просто проголосовать за все сообщения :) – NeverHopeless

ответ

4

Это должно сделать трюк, если всегда будет квадратные скобки в строке.

string str = "Hello, my name is Boris, [image1.jpg] i like drinking tea [img2.jpg]"; 
string[] Arr = str.Split(new char[] { '[', ']' }, StringSplitOptions.RemoveEmptyEntries); 
1

вы можете использовать Replace, чтобы сделать все "[" быть "]", а затем Split с ними, как это:

str = str.Replace("[", "]"); 

string[] Arr = str.Split(']'); 
+0

@downvoter, пожалуйста, оставьте сообщение, чтобы я знал, что не так –

+0

Не мой нисходящий, но это не сработает –

+0

@SriramSakthivel почему? –

-1

Использование регулярных выражений:

var regex = new Regex(@"(.+)\[(.+)\](.+)\[(.+)\]"); 
    Match match = regex.Match(""); 
    if (match.Success) { 
     match = match.NextMatch(); 
     string[] parts = match.Groups.Cast<Group>().Where(x => x.Success).Select(x => x.Value).ToArray(); 
    } 
+0

@downvoter: Любой комментарий?) – artplastika

-1

Это должно сделать трюк.

string[] strs = Regex.Split(str, "(?<Token>\[.*?\])", RegexOptions.Singleline) 
+1

Шаблон должен быть литералом строки verbatin ('@'). Кроме того, это приведет к массиву из 5 элементов вместо 4. – sloth