ms access-为什么Join()对限制为64的Split()执行操作会返回64个子字符串以上



我必须将一个字符串限制为最多64个子字符串,这些子字符串除以;。输入字符串包含113个子字符串:

x2BlackList = "mcc=206,mnc=1,mncLength=2,enbId=180096;mcc=206,mnc=1,mncLength=2,enbId=80459;mcc=206,mnc=1,mncLength=2,enbId=84604;mcc=206,mnc=1,mncLength=2,enbId=180166;mcc=206,mnc=1,mncLength=2,enbId=80279;mcc=206,mnc=1,mncLength=2,enbId=80288;mcc=206,mnc=1,mncLength=2,enbId=80457;mcc=208,mnc=10,mncLength=2,enbId=4791;mcc=206,mnc=1,mncLength=2,enbId=80197;mcc=206,mnc=1,mncLength=2,enbId=80188;mcc=206,mnc=1,mncLength=2,enbId=80195;mcc=206,mnc=1,mncLength=2,enbId=80206;mcc=206,mnc=1,mncLength=2,enbId=181309;mcc=206,mnc=1,mncLength=2,enbId=181218;mcc=206,mnc=1,mncLength=2,enbId=180254;mcc=206,mnc=1,mncLength=2,enbId=80332;mcc=206,mnc=1,mncLength=2,enbId=180340;mcc=206,mnc=1,mncLength=2,enbId=83355;mcc=206,mnc=1,mncLength=2,enbId=180367;mcc=206,mnc=1,mncLength=2,enbId=181222;mcc=206,mnc=1,mncLength=2,enbId=83887;mcc=206,mnc=1,mncLength=2,enbId=181026;mcc=206,mnc=1,mncLength=2,enbId=180356;mcc=206,mnc=1,mncLength=2,enbId=181001;mcc=206,mnc=1,mncLength=2,enbId=84624;mcc=206,mnc=1,mncLength=2,enbId=80209;mcc=206,mnc=1,mncLength=2,enbId=80318;mcc=206,mnc=1,mncLength=2,enbId=80454;mcc=206,mnc=1,mncLength=2,enbId=80471;mcc=206,mnc=1,mncLength=2,enbId=80476;mcc=206,mnc=1,mncLength=2,enbId=80486;mcc=206,mnc=1,mncLength=2,enbId=80526;mcc=206,mnc=1,mncLength=2,enbId=80445;mcc=206,mnc=1,mncLength=2,enbId=80586;mcc=206,mnc=1,mncLength=2,enbId=80212;mcc=206,mnc=1,mncLength=2,enbId=80189;mcc=206,mnc=1,mncLength=2,enbId=80453;mcc=206,mnc=1,mncLength=2,enbId=80474;mcc=206,mnc=1,mncLength=2,enbId=80191;mcc=206,mnc=1,mncLength=2,enbId=181230;mcc=206,mnc=1,mncLength=2,enbId=181394;mcc=206,mnc=1,mncLength=2,enbId=181401;mcc=206,mnc=1,mncLength=2,enbId=83338;mcc=206,mnc=1,mncLength=2,enbId=83395;mcc=206,mnc=1,mncLength=2,enbId=83415;mcc=206,mnc=1,mncLength=2,enbId=180381;mcc=206,mnc=1,mncLength=2,enbId=80180;mcc=206,mnc=1,mncLength=2,enbId=80196;mcc=206,mnc=1,mncLength=2,enbId=80484;mcc=206,mnc=1,mncLength=2,enbId=80204;mcc=206,mnc=1,mncLength=2,enbId=80464;mcc=206,mnc=1,mncLength=2,enbId=80314;mcc=206,mnc=1,mncLength=2,enbId=84580;mcc=206,mnc=1,mncLength=2,enbId=80520;mcc=206,mnc=1,mncLength=2,enbId=83387;mcc=206,mnc=1,mncLength=2,enbId=83376;mcc=206,mnc=1,mncLength=2,enbId=83397;mcc=206,mnc=1,mncLength=2,enbId=83439;mcc=206,mnc=1,mncLength=2,enbId=80324;mcc=206,mnc=1,mncLength=2,enbId=180094;mcc=206,mnc=1,mncLength=2,enbId=80291;mcc=206,mnc=1,mncLength=2,enbId=80293;mcc=206,mnc=1,mncLength=2,enbId=80297;mcc=206,mnc=1,mncLength=2,enbId=80299;mcc=206,mnc=1,mncLength=2,enbId=80307;mcc=206,mnc=1,mncLength=2,enbId=80458;mcc=206,mnc=1,mncLength=2,enbId=80473;mcc=206,mnc=1,mncLength=2,enbId=80502;mcc=206,mnc=1,mncLength=2,enbId=80517;mcc=206,mnc=1,mncLength=2,enbId=80540;mcc=206,mnc=1,mncLength=2,enbId=80583;mcc=206,mnc=1,mncLength=2,enbId=83815;mcc=206,mnc=1,mncLength=2,enbId=83818;mcc=206,mnc=1,mncLength=2,enbId=83823;mcc=206,mnc=1,mncLength=2,enbId=83834;mcc=206,mnc=1,mncLength=2,enbId=84006;mcc=206,mnc=1,mncLength=2,enbId=84018;mcc=206,mnc=1,mncLength=2,enbId=84594;mcc=206,mnc=1,mncLength=2,enbId=84605;mcc=206,mnc=1,mncLength=2,enbId=84610;mcc=206,mnc=1,mncLength=2,enbId=180514;mcc=206,mnc=1,mncLength=2,enbId=180519;mcc=206,mnc=1,mncLength=2,enbId=180523;mcc=206,mnc=1,mncLength=2,enbId=180528;mcc=206,mnc=1,mncLength=2,enbId=180530;mcc=206,mnc=1,mncLength=2,enbId=180611;mcc=206,mnc=1,mncLength=2,enbId=180612;mcc=206,mnc=1,mncLength=2,enbId=180616;mcc=206,mnc=1,mncLength=2,enbId=180618;mcc=206,mnc=1,mncLength=2,enbId=180619;mcc=206,mnc=1,mncLength=2,enbId=180620;mcc=206,mnc=1,mncLength=2,enbId=180623;mcc=206,mnc=1,mncLength=2,enbId=180625;mcc=206,mnc=1,mncLength=2,enbId=180629;mcc=206,mnc=1,mncLength=2,enbId=180814;mcc=206,mnc=1,mncLength=2,enbId=181254;mcc=206,mnc=1,mncLength=2,enbId=181275;mcc=206,mnc=1,mncLength=2,enbId=181466;mcc=206,mnc=1,mncLength=2,enbId=181482;mcc=206,mnc=1,mncLength=2,enbId=181648;mcc=206,mnc=1,mncLength=2,enbId=181737;mcc=234,mnc=10,mncLength=2,enbId=504599;mcc=234,mnc=10,mncLength=2,enbId=504699;mcc=234,mnc=10,mncLength=2,enbId=505533;mcc=234,mnc=10,mncLength=2,enbId=505559;mcc=234,mnc=10,mncLength=2,enbId=505563;mcc=234,mnc=10,mncLength=2,enbId=505627;mcc=234,mnc=10,mncLength=2,enbId=505711;mcc=234,mnc=10,mncLength=2,enbId=505805;mcc=234,mnc=10,mncLength=2,enbId=506130;mcc=234,mnc=10,mncLength=2,enbId=506624;mcc=234,mnc=10,mncLength=2,enbId=506752;mcc=234,mnc=10,mncLength=2,enbId=506888"

使用Split,我可以将子字符串的数量限制为64:

Dim List() As String, _
    Item As Variant, _
    Counter As Long
Counter = 0
List = Split(x2BlackList, ";", 64)
For Each Item In List
    Counter = Counter + 1
Next
Debug.Print Counter

调试窗口指示计数的64个元素。使用Join,我想将这64个元素放入一个以;为分隔符的字符串中:

NewBlackList = Join(List, ";")
Debug.Print NewBlackList

NewBlackList包含全部113个子串。我尝试过上面的代码,也尝试过下面的简化版本(我更喜欢使用它),但两者都没有将字符串限制为64个子字符串。

SetBlackList = Join(Split(x2BlackList, ";", 64), ";")

为什么Join()Split(,,64)返回的子字符串超过64个

Split()函数的第三个参数对返回的元素数量进行了限制。然而,这并不意味着会失去更多的元素。它们都在最后一个元素中未拆分地返回。

因此,您将把字符串拆分为最多64个子字符串。在这种情况下,第64个元素是元素64到113的未拆分值。

当您在结果数组上运行Join()时,您将获得原始字符串。

您需要做的是Split()字符串,然后丢弃您不想要的元素:

List = Split(x2BlackList, ";")
If UBound(List) > 63 Then
    ReDim Preserve List(63)
End If
NewBlackList = Join(List, ";")

相关内容

  • 没有找到相关文章

最新更新