(空文字列ではない)
Golangでスペースっぽい文字を見つけようとすると、次の3つの方法がありそうです。
この3つについて、自分はいまいち使い分けがわかっていなかったので、調べてみました。
ずらっとリストにしてみます。(たいていは知らない文字だけど)
文字名 | わかりやすく言うと | unicode の番号 | unicode.IsSpace | \s | \pZ |
---|---|---|---|---|---|
Character Tabulation | タブ文字(\t) | U+0009 | o | o | x |
End Of Line | 改行文字(\n) | U+000A | o | o | x |
Line Tabulation | 垂直タブ(\v) | U+000B | o | x | x |
Form Feed | \f | U+000C | o | o | x |
Carriage Return | \r | U+000D | o | o | x |
Space | 半角スペース | U+0020 | o | o | o |
Next Line | U+0085 | o | x | x | |
No-Break Space | U+00A0 | o | x | o | |
Ogham Space Mark | U+1680 | o | x | o | |
En Quad | U+2000 | o | x | o | |
Em Quad | U+2001 | o | x | o | |
En Space | U+2002 | o | x | o | |
Em Space | U+2003 | o | x | o | |
Three-Per-Em Space | U+2004 | o | x | o | |
Four-Per-Em Space | U+2005 | o | x | o | |
Six-Per-Em Space | U+2006 | o | x | o | |
Figure Space | U+2007 | o | x | o | |
Punctuation Space | U+2008 | o | x | o | |
Thin Space | U+2009 | o | x | o | |
Hair Space | U+200A | o | x | o | |
Line Separator | U+2028 | o | x | o | |
Paragraph Separator | U+2029 | o | x | o | |
Narrow No-Break Space | U+202F | o | x | o | |
Medium Mathematical Space | U+205F | o | x | o | |
Ideographic Space | 全角スペース | U+3000 | o | x | o |
まとめると次のような感じなんでしょうか。
分類 | 文字 |
---|---|
どれでも判定できる | 半角スペース |
unicode.IsSpace でしか判定できない |
垂直タブ・Next Line |
\pZ では判定できない |
制御文字・Next Line |
\s では判定できない |
いっぱいある |
結論としては、 unicode.IsSpace
を使えば良さそう という感じでしょうか。