找回密码
 立即注册

QQ登录

只需一步,快速开始

inroad

中级会员

70

主题

262

帖子

784

积分

中级会员

积分
784
inroad
中级会员   /  发表于:2023-5-4 10:14  /   查看:3072  /  回复:9
1金币
我的需求是这样的,有一个这样的对象,将b中包含a的对象前加@,没有包含的对象加#。然后输出为@1,@2,#3,#4,#5      写的vb代码是这样的,我在vs里面是可以使用的,但是在葡萄城里不能使用,报错。
Function stringHandle3(ByVal strA As String, ByVal strB As String) As String
        Dim aCollection As IEnumerable(Of String) = strA.Split(","c)
        Dim bCollection As IEnumerable(Of String) = strB.Split(","c)
        Dim resultCollection As New List(Of String)
        For Each item In bCollection
            If aCollection.Contains(item) Then
                resultCollection.Add("@" & item)
            Else
                resultCollection.Add("#" & item)
            End If
        Next
        Dim resultStr As String = String.Join(",", resultCollection)
        Return String.Join(",", resultCollection)
    End Function


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

您试一下这个:

9 个回复

倒序浏览
最佳答案
最佳答案
Felix.LiWyn认证
超级版主   /  发表于:2023-5-4 10:14:07
来自 8#
inroad 发表于 2023-5-4 18:26
我的格式其实是这样的,然后两个空格就会报错,我不太理解这个脚本

您试一下这个:
  1. Function ProcessData(a As String, b As String) As String
  2.         Dim arrA() As String
  3.         arrA = Split(a, ",")

  4.         Dim arrB() As String
  5.         arrB = Split(b, ",")

  6.         Dim result As String
  7.         result = ""

  8.         ' 遍历数组B中的每个元素
  9.         Dim i As Integer
  10.         For i = 0 To UBound(arrB)

  11.                 ' 判断当前元素是否包含在数组A中
  12.                 If IsInArray(arrB(i), arrA) Then
  13.                         result = result & "  ■" & i + 1
  14.                 Else
  15.                         result = result & "  □" & i + 1
  16.                 End If

  17.         Next


  18.         ' 返回结果
  19.         ProcessData = result
  20. End Function

  21. ' 判断某个元素是否包含在数组中
  22. Function IsInArray(str As String, arr As Object) As Boolean
  23.         Dim j As Integer
  24.         For j = 0 To UBound(arr)
  25.                 If arr(j) = str Then
  26.                         IsInArray = True
  27.                         Exit Function
  28.                 End If
  29.         Next
  30.         IsInArray = False
  31. End Function
复制代码


回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-5-4 12:24:18
2#
IEnumerable
我们只能写最原生的逻辑,所有引入的确实没办法,所以这个应该在AR中跑会报错
回复 使用道具 举报
inroad
中级会员   /  发表于:2023-5-4 14:26:25
3#
Felix.Li 发表于 2023-5-4 12:24
IEnumerable
我们只能写最原生的逻辑,所有引入的确实没办法,所以这个应该在AR中跑会报错

那我如何实现我这个方法呢
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-5-4 16:35:53
4#
inroad 发表于 2023-5-4 14:26
那我如何实现我这个方法呢

你可以用下面这个试一下:

  1. Function ProcessData(a As String, b As String) As String
  2.         Dim arrA() As String
  3.         arrA = Split(a, ",")

  4.         Dim arrB() As String
  5.         arrB = Split(b, ",")

  6.         Dim result As String
  7.         result = ""

  8.         ' 遍历数组B中的每个元素
  9.         Dim i As Integer
  10.         For i = 0 To UBound(arrB)

  11.                 ' 判断当前元素是否包含在数组A中
  12.                 If IsInArray(arrB(i), arrA) Then
  13.                         result = result & "@" & i + 1 & ","
  14.                 Else
  15.                         result = result & "#" & i + 1 & ","
  16.                 End If

  17.         Next

  18.         ' 去掉最后一个逗号
  19.         result = Left(result, Len(result) - 1)

  20.         ' 返回结果
  21.         ProcessData = result
  22. End Function

  23. ' 判断某个元素是否包含在数组中
  24. Function IsInArray(str As String, arr As Object) As Boolean
  25.         Dim j As Integer
  26.         For j = 0 To UBound(arr)
  27.                 If arr(j) = str Then
  28.                         IsInArray = True
  29.                         Exit Function
  30.                 End If
  31.         Next
  32.         IsInArray = False
  33. End Function
复制代码


回复 使用道具 举报
inroad
中级会员   /  发表于:2023-5-4 18:08:23
5#
Felix.Li 发表于 2023-5-4 16:35
你可以用下面这个试一下:

我把它变成了这样,但是不知道为什么加两个空格就报错,一个不报错   result = result &"  "& "@" & i + 1 & ","   
  1. Function ProcessData(a As String, b As String) As String
复制代码
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2023-5-4 18:18:13
6#
inroad 发表于 2023-5-4 18:08
我把它变成了这样,但是不知道为什么加两个空格就报错,一个不报错   result = result &"  "& "@" & i +  ...

您好,您在检查一下,我这边根据您的描述进行了测试,预览也是正常的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
inroad
中级会员   /  发表于:2023-5-4 18:26:14
7#
本帖最后由 inroad 于 2023-5-4 18:29 编辑
Bella.Yuan 发表于 2023-5-4 18:18
您好,您在检查一下,我这边根据您的描述进行了测试,预览也是正常的。
我的格式其实是这样的,然后两个空格就会报错,我不太理解这个脚本
  1. Function ProcessData(a As String, b As String) As String
  2.         Dim arrA() As String
  3.         arrA = Split(a, ";")

  4.         Dim arrB() As String
  5.         arrB = Split(b, ";")

  6.         Dim result As String
  7.         result = ""

  8.         ' 遍历数组B中的每个元素
  9.         Dim i As Integer
  10.         For i = 0 To UBound(arrB)

  11.                 ' 判断当前元素是否包含在数组A中
  12.                 If IsInArray(arrB(i), arrA) Then
  13.                         result = result & " " & "■" & arrB(i)
  14.                 Else
  15.                         result = result & " " & "□" & arrB(i)
  16.                 End If

  17.         Next

  18.         ' 去掉最后一个逗号
  19.         result = Left(result, Len(result) - 1)

  20.         ' 返回结果
  21.         ProcessData = result
  22. End Function
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
inroad
中级会员   /  发表于:2023-5-5 09:32:35
9#

我知道为什么了,可能是表格宽度不够,我拉宽后,是可以的。
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-5-5 09:51:39
10#
inroad 发表于 2023-5-5 09:32
我知道为什么了,可能是表格宽度不够,我拉宽后,是可以的。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部