2016-08-18 12 views
0

[自動ホットキー]でCSVファイルを読み込もうとすると、行を「、」で分割して各行の最後の2つの列を引き出します。現在、文字列を配列に分割して取得しようとしています。私は各行を MsgBox, A_LoopReadLineという行で印刷することはできますが、変数内で文字列を分割することはできません。アレイ内の文字列を配列に自動分割する

StringSplitとStrSplitを試しましたが、構文が間違っていると確信しています。ラインで自動ホットキーとラインでCSVファイルを読み込むしようと

MyArray := Object() 
Loop, read, %fileop% 
{ 
    MyArray.Insert(A_LoopReadLine) ; Append this line to the array. 
    index := 1 
    MsgBox, %A_LoopReadLine% 
    ;MyArray. 
    ;MsgBox, % StrSplit(A_LoopReadLine ,",") 
} 

Loop % MyArray.Length() 
    MsgBox % StrSplit(MyArray[A_Index],",") 
+0

を:[どのように私はAutoHotkeyをでタブ区切りの文字列を分割することができますか?](https://stackoverflow.com/q/45620437/3357935) –

答えて

1

は、各行の最後の2つの列を引き出すために「」によって 行を分割します。

MyArray := Object() 
Loop, Read, %fileop% 
    MyArray[A_Index]:=StrSplit(A_LoopReadLine,",") 

これはMyArray[row][column]形式のCSVファイルを保存します。例えば5行目の2番目の項目にアクセスする:MyArray[5][2]

for k,v in MyArray 
    v.RemoveAt(1,v.Length()-2) 

上記各列から全てが、最後の2つの項目が削除されます。


ドキュメント:

https://autohotkey.com/docs/commands/For.htm

https://autohotkey.com/docs/objects/Object.htm#RemoveAt_v1121+

https://autohotkey.com/docs/objects/Object.htm#Length


編集: そして、あなたのコードが機能しなかった理由としてします。それはちょっとだった。 StrSplit()オブジェクトの配列を返しますので、以下の行ではMsgBoxにオブジェクトを表示しようとしていましたが、これは許可されていません。

MsgBox % StrSplit(MyArray[A_Index],",") 

これは、例えば働くだろう:関連

MsgBox % StrSplit(MyArray[A_Index],",")[1] 
関連する問題