vb.net: можете ли вы разделить строку на строку? - PullRequest
27 голосов
/ 28 октября 2009

например, могу ли я сделать это:

split = temp_string.Split("<beginning of record>")

те из вас, кто рекомендовал:

split = Regex.Split(temp_string, "< beginning of record >")

не работает. просто возвращается первый символ "<" </p>

и те из вас, кто рекомендовал:

Dim myDelims As String() = New String(){"< beginning of record >"}
split = temp_string.Split(myDelims, StringSplitOptions.None)

это тоже не работает. он также возвращает только первый символ

Ответы [ 7 ]

36 голосов
/ 28 октября 2009

Попробуйте это:

string[] myDelims = new string[] { "<beginning of record>" };
split = temp_string.Split(myDelims,StringSplitOptions.None);

Выполнение этого через преобразователь кода приводит к следующему:

Dim myDelims As String() = New String() { "<beginning of record>" }
split = temp_string.Split(myDelims, StringSplitOptions.None)

Вам также может понадобиться убежать от шевронов, например:

"\< beginning of record \>"
16 голосов
/ 28 октября 2009

@ Мэтью Джонс 'ответ в VB.NET

Dim delim as String() = New String(0) { "<beginning of record>" } 
split = temp_string.Split(delim, StringSplitOptions.None)
6 голосов
/ 28 октября 2009

Вы можете написать себе метод расширения, чтобы упростить его (на основе ответа Мэтью Джонс )

(наверное, я тоже покажу пример ...)

Dim results = "hay needle hay needle hay".Split("needle")
' results(0) = "hay "
' results(1) = " hay "
' results(2) = " hay"

... C # ...

public static class Tools
{
    public static string[] Split(this string input, params string[] delimiter)
    {
        return input.Split(delimiter, StringSplitOptions.None);
    }
}

... VB.Net ...

Module Tools
    <Extension()> _
    Public Function Split(ByVal input As String, _
                          ByVal ParamArray delimiter As String()) As String()
        Return input.Split(delimiter, StringSplitOptions.None)
    End Function
End Module
6 голосов
/ 28 октября 2009

Вы можете посмотреть на Regex.Split () - метод.

И это похоже на работу

  dim s as string = "you have a <funny> thing <funny> going on"
  dim a() as string = Regex.Split(s,"<funny>")
  for each b as string in a 
     Response.Write( b & "<br>")
  next
3 голосов
/ 28 октября 2009

это похоже на работу

    Dim myString As String = "aaajjbbbjjccc"
    Dim mySplit() As Char = "jj".ToCharArray
    Dim myResult() As String = myString.Split(mySplit, StringSplitOptions.RemoveEmptyEntries)
2 голосов
/ 28 октября 2009

Если то, что вы на самом деле разбиваете, это XML, читаемый в строку, тогда не используйте строки VB для этой работы. Используйте XSLT. В VB / C # есть методы для рендеринга XML с помощью XSLT. Это будет намного быстрее и надежнее.

1 голос
/ 28 октября 2009

Я так не думаю, нужны только персонажи. Вы можете выполнить некрасивую хакерскую работу и сначала заменить весь экземпляр строки каким-либо символом, которого еще нет в строке, а затем разделить этот символ.

Отредактировано, чтобы добавить: Я думаю, что Regex.Split может разделить регулярное выражение, поэтому, если вы создадите простое регулярное выражение, представляющее собой просто строку, на которую вы хотите разделить, это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...