0

区切り文字を指定することで、文字列を複数のサブ文字列に分割できることを知っています。次のように、文字の位置に基づいて部分文字列を選択することもできます。

sAddressOverflow = Right(sAddressLine1,5)

私がやりたいのは、次のように入力文字列を分割することです。

「123SouthMainStreetApt.24B」

しかし、25番目の文字の左側の最初のスペースに基づいて分割される2つのサブストリングだけで終わりたいと思います。したがって、上記の入力を使用した目的の出力は次のようになります。

Substring1 = "123 South Main Street" Substring2="Apt。24B"

これは可能ですか?

4

3 に答える 3

2

正規表現には、使用する場所に関係なくパターンを構成できるという利点と、適応性が高いという利点があるため、正規表現を使用して文字列を操作することをお勧めします。残念ながら、AnsgarWiechersのパターンは要件と完全には一致していません。これが行うものです:

myString = "1234 6789A 234567 9B12 4567 890"
Set re = new RegExp
re.Pattern = "^(.{1,25}) (.*)$"
Set matches = re.Execute(myString)

wscript.echo "leftpart: " & matches(0).submatches(0)
wscript.echo "rightpart: " & matches(0).submatches(1)
于 2012-11-13T12:02:06.117 に答える
1

そのような組み込み関数は利用できませんが、これを試してみることをお勧めします。

add = "123 South Main Street Apt. 24B"
valid = Left(add,25)
arr = Split(valid)
char= InStrRev(add,arr(UBound(arr)))-1
address1 = Left(add,char)
address2= Right(add,Len(add)-char)
Wscript.echo address1
Wscript.echo address2

これは完璧な方法ではないかもしれませんが、うまくいきます!!!

于 2012-11-12T22:34:00.297 に答える
0

これは正規表現で行うことができますが、明確に定義された形式が必要です。

addr = "123 South Main Street Apt. 24B"

Set re = New RegExp
re.Pattern    = "^(\d+ .*) +(apt\. +\d+(.*?))$"
re.IgnoreCase = True

Set m = re.Execute(addr)
If m.Count > 0 Then
  WScript.Echo m(0).SubMatches(0)
  WScript.Echo m(0).SubMatches(1)
End If

「明確に定義された形式」とは、文字列内の部分を識別するために、式にいくつかの「アンカー」(または固定点)が必要であることを意味します。この例では、アンカーはサブストリング「apt」です。1つ以上の数字が続きます。

于 2012-11-13T08:37:51.467 に答える