(空文字列ではない)
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 を使えば良さそう という感じでしょうか。