【问题标题】:Split a string that taking string and integer values拆分带有字符串和整数值的字符串
【发布时间】:2011-02-15 10:47:34
【问题描述】:

我想拆分一个同时采用字符​​串和整数值的字符串,例如 (Cmp_12)。 我想单独使用它们。

【问题讨论】:

  • 您能否提供更完整的输入字符串示例?
  • 请解释这与 SQL Server 2005 有何关系。您是否使用数据库中的值?你想用 vb.net 中的内联 sql 转换它吗?提供更多信息,也许是@Fredrik 指出的一个例子。

标签: javascript asp.net vb.net sql-server-2005


【解决方案1】:

如果你想要的两个项目之间有一个已知的标志,那么你就可以使用

Dim myString as string = "Item1_Item2"
Dim MyItems() as string = split(myString,"_")
Dim ItemA as string = MyItems(0)
Dim ItemB as string = MyItems(1)

这是将两个项目放在一个字符串中的一种方法
如果您知道 Items 是什么类型,那么您可以使用

Cint(MyItems(x))
Cbool(MyItems(x))

或者你喜欢什么转换
我真的不知道我是否接近你的问题

【讨论】:

  • 那么我可以单独使用这两个项目,如果我不能那么在if条件下如何使用?
  • @Ritu, If ItemA .... then [do something] end if.或者你可以使用 If ItemA =, , [of somehting] and ItemB =, , [of somehting] then [do something] end if。请记得投票给答案
【解决方案2】:

你可以使用Regular Expressions

对于数字:[\d]+ 将匹配一个或多个数字。

对于文本:[a-z]+ 将匹配 a-z 范围内的一个或多个字母。您可以使用/i 运算符使该位不区分大小写。

对每个字符串执行两次.match 调用(首先是数字测试,然后是文本测试),你会得到你想要的。使用matchgroups 可以更优雅地执行此操作,但这将帮助您入门。

试试这个交互式正则表达式测试器 - 它非常有用:http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

【讨论】:

    【解决方案3】:

    使用split 函数类似

    var str = "camp_12";
    var str_array = str.split("_");
    alert(str_array[0]+" "+str_array[1]);
    

    【讨论】:

      【解决方案4】:

      SQL Server 版本使用leftrightcharindex

      declare @s varchar(50) = 'Cmp_12'
      
      select  
        left(@s, charindex('_', @s, 0)-1),
        right(@s, len(@s)-charindex('_', @s, 0))
      

      【讨论】:

      • 是的,这是获取子字符串的另一种非常好的方法,前提是您知道每个子字符串的长度。
      • @Lefteris - 你不需要知道字符串的长度,只需要知道最大长度,我选择 50。但是你需要知道分隔符。 len 给出字符串的长度,charindex 给出_ 的位置。
      • 是的,你的权利,但是当我说长度时,我的意思是使用“左”或“右”,你需要知道每个的长度,为了排除另一个,多长时间你会把它拿回来。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 2020-06-03
      相关资源
      最近更新 更多