Groovyで改行コードを扱う方法
マルチプラットフォームを扱うとなるとやっかいなモノの1つが改行コード。
プラットフォーム | 文字コード | 16進数表示 |
---|---|---|
Windows | \r\n | 0x0D,0x0A |
Unix(Solaris、Linux) | \n | 0x0A |
Mac OS (バージョン9まで) | \r | 0x0D |
Javaであれば、以下でプラットフォームごとの改行コードを取得することができる
System.getProperty("line.separator")
Groovyでは、そのシンタックスシュガーで配列でも取得することができる。
System.properties['line.separator']
また、Groovyではその他にも以下の取得メソッドがある。
org.codehaus.groovy.tools.Utilities.eol()
Groovy JDKのStringクラスには、取得するメソッドとは別に、改行コードを変換するメソッドも存在する。
メソッド名 | 説明 |
---|---|
normalize() | 改行コードを\nに変換する |
denormalize() | LF、 CR/LF、CRの改行コードを各プラットフォームの改行コードに変換する |
記述形式としては、\nとして書いておいて、最後に、denormalize()で各プラットフォームの
改行文字に変換するということもできる。
ソース
lineSeparator = System.properties['line.separator'] eol = org.codehaus.groovy.tools.Utilities.eol() windowsText = '1行目\r\n2行目\r\n' unixText = '1行目\n2行目\n' /* プラットフォームにあったテキストの方がTrueになる */ println "1行目${lineSeparator}2行目${lineSeparator}" == windowsText println "1行目${lineSeparator}2行目${lineSeparator}" == unixText /* プラットフォームにあったテキストの方がTrueになる */ println "1行目${eol}2行目${eol}" == windowsText println "1行目${eol}2行目${eol}" == unixText /* 両方Trueになる */ println '1行目\n2行目\n' == windowsText.normalize() println '1行目\n2行目\n' == unixText.normalize() /* 各プラットフォームの改行コードに変換されるので、 * Windowsのときだけ、Trueになる */ println '1行目\r\n2行目\r\n' == windowsText.denormalize() println '1行目\r\n2行目\r\n' == unixText.denormalize() /* 各プラットフォームの改行コードに変換されるので、 * Unixのときだけ、Trueになる */ println '1行目\n2行目\n' == windowsText.denormalize() println '1行目\n2行目\n' == unixText.denormalize()
Windows
結果
[D:\workspace\groovy_SandBox]groovy LineSeparator.groovy true false true false true true true true false false
環境
- Windows XP
- Groovy Version: 1.7.5 JVM: 1.6.0_12
Linux
結果
[oc@centos5 Groovy]$ groovy LineSeparator.groovy false true false true true true false false true true
気になるモノ
ベッドやソファに簡単に差し込むだけで収納ラックになる新しい発想のラックが登場!座ったまま、寝たまま、リモコンがすぐ見つかる!
あなろ(インテリア雑貨)
¥ 980 (税込、送料別)
価格は記載時点のものです。購入前にご確認ください。