Разделить строку на подстроки с разделителем в три пробела

Дядя Корней

Привет! Ребят, помогите из строк удалить часть строки. Строки имеют такой вид: rrreree1233 1 fsdfsdfd 1233 4433увава 86544 То, что нужно оставить, я выделил жирным(болд). После жирного текста всегда идет три пробела(форум скорее всего удалит из поста лишние пробелы и оставит только один пробел) и за тремя пробелами всегда идет какое-то число от нуля до 100500.Split насколько я знаю может разбить строку только по одному символу, поэтому три пробела в качестве разделителя указать не получится. Replace тоже не подойдет, он сможет удалить пробелы, но цифры за пробелами останутся.Регулярка? Я не знаю как. Или может есть еще какие-то варианты?
5 ответов

Дядя Корней

Split может разбить строку по делиметру, которым может быть и 100500 пробелов.Например:
textBox1.Text = textBox1.Text.Split("   ")(0).ToString


Дядя Корней

Да, нашел сейчас решение.Вот такой код не работает:
Dim s As String = "это пример [B]тут три пробела[/B] 445545445"
Dim a() As String = s.Split("[B]тут три пробела[/B]")
Вот так работает:
Dim s As String = "это пример [B]тут три пробела[/B] 445545445"
Dim a() As String = Split(s, "[B]тут три пробела[/B]")
Пользовался всегда первым вариантом и если там указан один символ, то получаем желаемый результат, если же символов больше, чем один, то всё, не работает.В общем ладно, вопрос решен, спасибо.


Дядя Корней

Пользовался всегда первым вариантом
И правильно делали. Второй вариант хоть и работает, но это не .NET-овский сплит.В сплит можно содержать целые группы символов.
        Dim S As String = "Дядя Корней   и Лунтик)"
        Dim ТриПробела() As String = {"   "}
        MsgBox(S.Split(ТриПробела, StringSplitOptions.******************)(0))


Дядя Корней

Памирыч, спасибо, такой вариант тоже работает, Лунтик отделился


Дядя Корней

Дядя Корней, раз уж завели разговор на эту тему, продолжу по поводу Split.Применение на практике. Допустим, есть слова, разделенные разным "мусором". Пишем:
        Dim S As String = "Word1   Word2##Word3;;;;Word4"
        Dim Spl() As String = {"   ", "##", ";"}
        Dim Out() As String = S.Split(Spl, StringSplitOptions.******************)
Обратите внимание - последний разделитель не ";;;;" а ";" Если с первыми двумя все и так понятно, то о третьем можно сказать дополнительно. Ведь в строке у нас идут эти символы четыре раза подряд. Тогда мы должны получить массив из слов и "пустышек", что заключены между точками с запятыми. Но - обратите внимание на параметр StringSplitOptions.******************. Он говорит, что, если вдруг при разделении строки вдруг появляются пустышки, мы их выбрасываем. В итоге в итоговый массив попадает только полезная информация - наши четыре Word