0

各セットが数字 6 で始まり、常に 9 文字の長さである文字列から数字をグループ化する VB コードまたは式を Access 2010 で作成するのに助けが必要です。

文字列の例:

  1. 注文確認番号 638917872-001 部分注文/$23.74 受領

  2. 注文確認 - 複数の注文 - 注文確認#639069135-001/$297.45 - 注文確認#639069611-001/$32.08.

私はVBコードを使用してすべてのアルファベット文字を削除していますが、それは私に残っています:

  • 6389178720012374文字列 1 から
  • 6390691350012974563906961100132082弦から。

私が気にするのは、6 で始まる 9 文字の長さの注文番号だけです。もっと簡単な方法があることはわかっています。

4

3 に答える 3

2

VB.NET ソリューション:

結果の文字列から最初の 9 つの数字だけが必要な場合は、String.Substring を使用できます。

Dim numberString as String = "6389178720012374"
Dim newString As String = numberString.Substring(0, 9)
MessageBox.Show(newString)

ショー 638917872

MSDN リンク

編集:

RegEx を使いたいと思うかもしれません - おそらく次のようなものから始められます:

Private Sub Input()
    Dim numberString As String = "Order Confirmation # 638917872-001 Partial Order/$23.74 RECEIVED"
    Dim numberString2 As String = "Order Confirmation - Multiple Orders - Order Confirmation#639069135-001/$297.45 - Order Confirmation#639069611-001/$32.08"

    GiveMeTheNumbers(numberString)
    GiveMeTheNumbers(numberString2)
End Sub

Function GiveMeTheNumbers(ByVal s As String) As String
    Dim m As Match = Regex.Match(s, "6\d{8}") 'get 9 digit #s begin w/6
    Do While m.Success
        MessageBox.Show(m.Value.ToString)
        m = m.NextMatch()
    Loop
    Return False
End Function

結果 - MessageBox1: 638917872 MessageBox2: 639069135 MessageBox3: 639069611

于 2013-05-22T13:33:47.363 に答える
0

この関数を使用できます... VB.NETでテスト済み

Function NumOnly(ByVal s As String) As String
    sRes = ""

    For x As Integer = 0 To s.Length - 1           
        If IsNumeric(s.Substring(x, 1)) Then sRes = sRes & s.Substring(x, 1)
    Next
    return sRes
End Function

ms-access の小さな変更

于 2013-05-22T14:06:44.143 に答える