タグ: 変換

  • [言語比較]Split : 区切記号で文字列を配列へ変換

    [言語比較]Split : 区切記号で文字列を配列へ変換

    Lotus Script 言語

    • 配列 = Split (文字列) ‘ 区切記号は空白になります
    • 配列 = Split (文字列, 区切記号)
    • 配列 = Split (文字列, 区切記号, 戻り値の要素数)
    • 配列 = Split (文字列, 区切記号, 戻り値の要素数, 評価方法)

    戻り値の要素数
    -1 : 指定なし。すべての区切記号で分割
    0 : 戻り値に値なし。戻り値の要素数は無し
    1 : 分割なし。戻り値の要素数は-1と同じ
    2 : 最初の区切記号だけで2つに分割。戻り値の要素数は2つまで
    3 : 最初と2つ目の区切記号だけで3つに分割。戻り値の要素数は3つまで

    評価方法
    0 : 大文字小文字、全角半角を区別します
    1 : 大文字小文字を区別しません
    4 : 全角半角を区別しません
    5 : 大文字小文字、全角半角を区別しません

    VbScript 言語

    • 配列 = Split (文字列) ‘ 区切記号は空白になります
    • 配列 = Split (文字列, 区切記号)
    • 配列 = Split (文字列, 区切記号, 戻り値の要素数)
    • 配列 = Split (文字列, 区切記号, 戻り値の要素数, 評価方法)

    評価方法
    0 : バイナリーモード
    1 : テキストモード(大文字小文字を区別しません)

    Lotus 式言語

    • @Explode (文字列); ‘ 区切記号は空白・カンマ(,)・セミコロン(;)になります
    • @Explode (文字列, 区切記号);
    • @Explode (文字列, 区切記号, 戻り値にブランクを含めるか?);
    • @Explode (文字列, 区切記号, 改行を区切り記号として扱うか?);

    区切記号
    区切記号の長さは1文字です
    区切記号に「ab」を指定すると「a」と「b」が区切記号になります

    戻り値にブランクを含めるか?
    False : (初期値)文字列の最初や最後に区切記号がある、または区切記号が連続しているとき、戻り値にブランクが含まれないようにします
    True : 戻り値からブランを取り除きません

    改行を区切り記号として扱うか?
    True : (初期値)改行を区切記号に含めます
    False : 改行は区切記号ではありません

  • [言語比較]Format : 日時値を文字値へ変換

    [言語比較]Format : 日時値を文字値へ変換

    Lotus Script 言語

    • Format (日時)
    • Format (日時, 形式)

    日時の形式の例
    2020/11/29 = Format (Now, {Short Date})
     ※オペレーティングシステムで指定された日付形式になります
    14:51 = Format (Now, {Short Time})
     ※オペレーティングシステムで指定された時刻形式になります
    2020/11/29 14:51:06 = Format (Now, {yyyy/mm/dd hh:mm:ss})
    11/29 11:06 = Format (Now, {mm/dd mm:ss})
    02:51:06 PM = Format (Now, {hh:mm:ss AM/PM})
     ※月と時はどちらもmmで指定しますが、hhのあとのmmは時と解釈されます
     ※スラッシュ(/)とコロン(:)はオペレーティングシステムで指定された記号に変換されます
     ※AM/PMと記載するとhhは01~12になり、AMまたはPMが付加されます
     ※am/pmと小文字で記載すると、amまたはpmが付加されます
    2020/11/29 14:51:06 = Format (Now, {General Date})

    VbScript 言語

    • FormatDateTime (日時)
       ※色々とオプションを指定できます

    Lotus 式言語

    • @Text (日時);
    • @Text (日時; 形式);

    日時の形式の例
    2020/11/29 14:51:06 = @Text (@Now);
    2020/11/29 14:51:06 = @Text (@Now; {S2});
    2020/11/29 = @Text (@Now; {S0});
    14:51:06 = @Text (@Now; {S1});
    14:51 = @Text (@Now; {T1});

  • [Linux]lsで取得したファイル一覧をTSV形式に変換して表計算ソフトに取り込みました

    [Linux]lsで取得したファイル一覧をTSV形式に変換して表計算ソフトに取り込みました

     lsコマンドでファイルの一覧を取得できますが、表計算ソフトに貼り付けられるようなテーブルではありません。使い勝手を良くするためにCSVまたはTSV形式のファイルに変換してみましょう。

     lsコマンドの結果は次のような規則があります。
     「/」で始まる行はディレクトリをあらわします。ここからディレクトリの情報が表示されるという意味です。
     「-(ハイフン)」で始まる行はファイルです。

     では、ノーツ(開発プラットホーム)のアクションボタンでCSVやTSVに変換するプログラムをコーディングしてみましょう。
     ※最初はC#で変換しようとしましたが、ノーツの手軽さに負けました。

     次は、Windows OS のドキュメントフォルダの source.txt ファイルを読み込んで result.tsv を作成するプログラムになります。コーディングの手間を減らすためにファイル名を固定にしています。

    Option Declare
    
    Const SOURCE_FILE = {source.txt}
    Const CHAR_SET = {UTF-8}
    Const RESULT_FILE = {result.tsv}
    Const PathPartition0 = {/}   ' 初期値
    Const PathPartition1 = {\}   ' 選択値
    
    Sub Click(Source As Button)
    	Dim RESULT_SEPARATOR As String
    	RESULT_SEPARATOR = Chr (9)
    	
    	Dim sourcefolder As String
    	Dim pathpartition As String
    	Dim sourcefilepath, resultfilepath As String
    	Dim scriptshell As Variant
    	Dim sourcefile, resultfile As Integer
    	
    	On Error Resume Next
    	Set scriptshell = CreateObject ({WScript.Shell})
    	sourcefolder = scriptshell.SpecialFolders ({MyDocuments})
    	On Error Goto 0
    	If 0 = Len (sourcefolder) Then
    		Print {MyDocuments フォルダが不明}
    		Exit Sub
    	End If
    	pathpartition = PathPartition0
    	If 0 < Instr (1, sourcefolder, PathPartition1) Then
    		pathpartition = PathPartition1
    	End If
    	sourcefilepath = sourcefolder + pathpartition + SOURCE_FILE
    	
    	
    	sourcefile = Freefile ()
    	Err = 0
    	On Error Resume Next
    	Open sourcefilepath For Input As sourcefile Charset = CHAR_SET
    	On Error Goto 0
    	If 0 < Err Then
    		Print {ファイルが見つかりません : } + sourcefilepath
    		Exit Sub
    	End If
    	resultfile = Freefile ()
    	resultfilepath = sourcefolder + pathpartition + RESULT_FILE
    	On Error Resume Next
    	Open resultfilepath For Output As resultfile
    	On Error Goto 0
    	If 0 < Err Then
    		Print {ファイルを作成できません : } + resultfilepath
    		Close sourcefile
    		Exit Sub
    	End If
    	
    	Dim sourceline, currentdirectory As String
    	currentdirectory = {}
    	Do Until True = Eof (sourcefile)
    		Line Input #sourcefile, sourceline
    		Select Case Left (sourceline, 1)
    		Case {/}
    			Select Case Right (sourceline, 1)
    			Case {:}
    				currentdirectory = Left (sourceline, Len (sourceline) -1)
    			End Select
    		Case {-}
    			Dim columns (1) As String
    			Dim position, beforeposition, column As Long
    			columns (0) = currentdirectory
    			beforeposition = -1
    			column = 1
    			For position = 1 To Len (sourceline)
    				Select Case Mid (sourceline, position, 1)
    				Case { }
    					If (beforeposition + 1) <> position Then
    						column = column + 1
    					End If
    					beforeposition = position
    				Case Else
    					If (beforeposition + 1) = position Then
    						If 8 = column Then
    							columns (1) = Mid (sourceline, position)
    							Exit For
    						End If
    					End If
    				End Select
    			Next
    			Print #resultfile, Implode (columns, RESULT_SEPARATOR)
    		End Select
    	Loop
    	Close resultfile
    	Close sourcefile
    End Sub

      表計算ソフトを開いて、メニューの[開く]から result.tsv を選択して、区切文字をタブに指定して読み込めば完了です。
     ls で / 以下すべてを取得しているとき、result.tsv の中身を表計算ソフトへコピペするとメモリ不足エラーが表示されることがあるため注意です。