【问题标题】:vb.net: can you split a string by a stringvb.net:你能用一个字符串分割一个字符串吗
【发布时间】:2009-10-28 18:29:56
【问题描述】:

例如,我可以这样做吗:

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

你们推荐的人:

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

它不工作。它只是返回第一个字符“

还有那些推荐的人:

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

这也不起作用。它也只返回第一个字符

【问题讨论】:

  • 我认为问题在于您需要避开人字形。查看我的编辑。
  • 如果您仍然遇到问题,您可能想在 temp_string 中给出一个示例。您的示例适用于 temp_string="beforeafter"
  • Regex.split 为我工作。带有 String.split 的 char 数组选项似乎应该在

标签: .net vb.net string


【解决方案1】:

试试这个:

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 \>"

【讨论】:

  • 在我的情况下,直到我添加选项 StringSplitOptions.None 才起作用。没有它,VS 告诉我字符串不能转换为字符
  • 另外,一种写法是:Split = temp_string.Split({""}, StringSplitOptions.None)
【解决方案2】:

@Matthew Jones' VB.NET 中的答案

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

【讨论】:

    【解决方案3】:

    您可以为自己编写一个扩展方法以使其更容易(基于Matthew Jones的答案)

    (我想我也应该举个例子……)

    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
    

    【讨论】:

      【解决方案4】:

      您可以查看 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
      

      【讨论】:

        【解决方案5】:

        这似乎有效

            Dim myString As String = "aaajjbbbjjccc"
            Dim mySplit() As Char = "jj".ToCharArray
            Dim myResult() As String = myString.Split(mySplit, StringSplitOptions.RemoveEmptyEntries)
        

        【讨论】:

          【解决方案6】:

          如果您真正拆分的是将 XML 读入字符串,那么不要使用 VB 字符串来完成这项工作。使用 XSLT。 VB/C# 具有使用 XSLT 呈现 XML 的方法。它会更快,更可靠。

          【讨论】:

            【解决方案7】:

            我不这么认为,它只需要字符。你可以做一些丑陋的破解工作,首先用字符串中不存在的某个字符替换字符串的所有实例,然后对该字符进行拆分。

            编辑添加:我认为 Regex.Split 能够对正则表达式进行拆分,因此,如果您制作一个简单的正则表达式,即您想要拆分的字符串,那应该可以。

            【讨论】:

            • split = Regex.Split(temp_string, "")?
            • 可能是这样的? pattern = "" Dim r As Regex r = new Regex(pattern) Dim results As String() results = r.Split(temp_string) 可能有用...我不知道 vb 什么的,只是一个根据文档猜测
            • 如果您要使用Regex.Split,请在您要匹配的对象上使用Regex.Escape
            猜你喜欢
            • 2023-03-21
            • 1970-01-01
            • 2017-11-30
            • 2021-12-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-02-25
            相关资源
            最近更新 更多