1

私は、テキスト ファイルを開きC_PIN .

ほぼ完成したと感じていますが、実行時エラー 5 と 438 が発生することはありません。

読み上げられるテキストの例:


COMP C48 66250110810 cap sc_cap.0603_H9 43.3959 74.3331 1 0
C_PROP (PB_FREE,"Y") (VALUE,"10nF") (TOLER,"10%") (PART_NAME,"06035C103K4T2A")
C_PIN C48-1 43.3959 1 75.19.09 sp.0603_H9.1 /N$1567
C_PIN C48-2 43.3959 73.5711 1 1 0 sp.0603_H9.2 GN


の後に余分なスペースが必要です1 1 0

ここに私のコードの問題があると思います:

x = " "
Do While Not EOF(infilenum%)
 Line Input #infilenum%, a$
  If Left$(a$, 5) = "C_PIN" Then
   For Each x In InStr
   'If InStr(strText, " ") Then
     w = w + 1
    'w = strText.Split
     For w = 5 To w = 7
      My.Computer.FileSystem.WriteAllText (infilename$)
      strText = My.Computer.FileSystem.ReadAllText(infilename$).Replace(w, x + w)
      vb.newline

どんな助けでも大歓迎です!

4

2 に答える 2

3
For Each x In InStr

決して有効ではありません!!!

分割と結合を使用できます。

If Left(a, 5) = "C_PIN" Then
    va = Split(a, " ")
    va(4) = va(4) & " " 'Add extra space
    va(5) = va(4) & " "
    va(6) = va(4) & " "
    a =  Join(va, " ") 'Join with extra spaces added
End If

これで、文字列を書き込むことができます。

于 2013-07-04T10:04:36.387 に答える
1

を使用してシングルショット置換を行う代替バージョンで遊んだ

少し複雑に見えますが、一発交換以外のメリットは、

  • 皮切りにC_PIN
  • (少なくとも)さらに6語ある

このサンプルでは、​​最初のファイルを取得し、スペースを追加して 2 番目のバージョンを保存します。

2 つの別個の正規表現の置換を使用して、追加の要件のために更新されました

Sub ReDo()
Dim objFso As Object
Dim objFil As Object
Dim objFil2 As Object
Dim objRegex As Object
Dim strFile As String
Dim strAll As String

strFil = "c:\temp\REnglish.txt"
strFil2 = "c:\temp\REnglish2.txt"

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Pattern = "(\nC_PIN\s)((\b[^\s]+\b\s){3})(\b[^\s]+\b\s)(\b[^\s]+\b\s)(\b\d\b\s)"
.Global = True
Set objFil = objFso.OpenTextFile(strFil)
strAll = objFil.ReadAll
Set objFil2 = objFso.createtextfile(strFil2)
strAll = .Replace(strAll, "$1$2$3$4 $5 $6 ")
.Pattern = "(\nC_PIN\s)((\b[^\s]+\b\s){3})(\b[^\s]+\b\s)(\b[^\s]+\b\s)(\b\d{2,}\b\s)"
objFil2.write .Replace(strAll, "$1$2$3$4 $5 $6")
End With
objFil.Close
objFil2.Close
End Sub
于 2013-07-04T12:57:40.910 に答える