« [whitespaceAndNewlineCharacterSet]行頭行末の余分な改行を取る | トップページ | [Script menu]スクリプトメニューから実行した時の分岐 »

[TSV]タブ区切りテキスト基本

001_20230220142101

#!/usr/bin/env osascript

----+----1----+----2----+-----3----+----4----+----5----+----6----+----7

#

#

(*

タブ区切りテキストをArray

public.tab-separated-values-text

text/tab-separated-values

*)

#

#

# com.cocolog-nifty.quicktimer.icefloe

----+----1----+----2----+-----3----+----4----+----5----+----6----+----7

##自分環境がos12なので2.8にしているだけです

use AppleScript version "2.8"

use framework "Foundation"

use scripting additions


property refMe : a reference to current application


tell application "CotEditor"

  tell front document

    set strText to contents

    set strActivDocName to name

    ####改行コード取得

    set valueNewLineChr to (line ending)

  end tell

  if valueNewLineChr is CRLF then

    log "改行コードはCRLFWINDOWSです"

  else if valueNewLineChr is CR then

    log "改行コードはCRMacOSです"

  else if valueNewLineChr is LF then

    log "改行コードはLFUNIXです"

  end if

end tell

#####元になるタブ区切りテキスト

set strText to strText as text

###NSString

set ocidText to refMe's NSString's stringWithString:strText

###不要な改行を取る(これは必要なら実施)

set ocidText to ocidText's stringByTrimmingCharactersInSet:(refMe's NSCharacterSet's whitespaceAndNewlineCharacterSet)

############################

######改行毎でリスト化(他にいい方法がありそうな気もする)

############################

######改行コード

set boolCRLF to ocidText's containsString:"\r\n"

set boolCR to ocidText's containsString:"\r"

#####格納用リストの初期化

set ocidTextArray to refMe's NSMutableArray's alloc()'s initWithCapacity:0

#####改行コード判定

if boolCRLF is true then

  log "改行コードはCRLFWINDOWSです"

  #####CRLF指定でリスト化

  set ocidTextArray to ocidText's componentsSeparatedByString:"\r\n"

else if boolCR is true then

  log "改行コードはCRMacOSです"

  ####改行コード指定でリスト化

  set ocidLineEndChrSet to refMe's NSCharacterSet's characterSetWithCharactersInString:"\r"

  set ocidTextArray to ocidText's componentsSeparatedByCharactersInSet:ocidLineEndChrSet

else

  set boolLF to ocidText's containsString:"\n"

  if boolLF is true then

    log "改行コードはLFUNIXです"

    ####改行コード指定でリスト化

    set ocidLineEndChrSet to refMe's NSCharacterSet's characterSetWithCharactersInString:"\n"

    set ocidTextArray to ocidText's componentsSeparatedByCharactersInSet:ocidLineEndChrSet

  else

    log "改行の無い1行の文字列です"

    return "改行の無い1行の文字列です"

  end if

end if

############################

######必要な事項

############################

####行数

set numRowLine to (count of ocidTextArray) as integer


####最大列数(ROWによってタブ数が違う場合対策用)

set numMaxColumnLine to 0 as integer

repeat with itemTextArray in ocidTextArray

  set ocidCntTabArray to (itemTextArray's componentsSeparatedByString:"\t")

  set numCntTab to (count of ocidCntTabArray) as integer

  if numMaxColumnLine < numCntTab then

    set numMaxColumnLine to numCntTab as integer

  end if

end repeat

log "行数:" & numRowLine

log "最大列数:" & numMaxColumnLine




|

« [whitespaceAndNewlineCharacterSet]行頭行末の余分な改行を取る | トップページ | [Script menu]スクリプトメニューから実行した時の分岐 »

Text TSV」カテゴリの記事