📱

Stringが特定のCharacterSetだけで構成されているかを調べる方法

2021/03/16に公開

Stringが特定のCharacterSetだけで構成されているかを知りたい

例えば、許容する文字列にアルファベット、数字、"-", "#", "&"を指定したいとする。そんな時、こんな風に書ける。

var characterSet = CharacterSet()
characterSet.formUnion(CharacterSet.alphanumerics)
characterSet.insert("-")
characterSet.insert("#")
characterSet.insert("&")

return trimmingCharacters(in: characterSet).isEmpty

余談

これは trimmingCharacters(in:) がStringの両端がCharacterSetに含まれていたらトリミングするから、もし、StringがCharacterSetだけで構成されていたらString.trimmingCharacters(in:) の結果が空文字になるから成立している。

例えばこんな感じ。

"ABC".trimmingCharacters(in: .alphanumerics) // -> ""

ただ、ぱっと見わかりにくいような気もするので、なんだかなという気持ち。

https://developer.apple.com/documentation/foundation/nsstring/1415462-trimmingcharacters

Discussion