こんにちは!
プログラミング未経験文系出身、Elixirの国に迷い込んだ?!見習いアルケミストのaliceと申します。
今回はStringモジュールについて学んだことをまとめます。
目次
1.Stringモジュールで遊んでみたシリーズ① -String.at ~ String.chunk の紹介
2.Stringモジュールで遊んでみたシリーズ② -String.codepoints ~ String.ends_with? の紹介
3.Stringモジュールで遊んでみたシリーズ③ -String.equivalent? ~ String.last の紹介(本記事)
目的
Stringモジュールに含まれる関数を触って機能を理解したい
実行環境
Windows 11 + WSL2 + Ubuntu 22.04
Elixir v1.17.3
Erlang v27.0
String.equivalent?とは
String.equivalent?(string1, string2)
はstring1
とstring2
が正規化形式で同じか否かをチェックします。
この関数は下記のパターンマッチと同じです。1
String.normalize(string1, :nfd) == String.normalize(string2, :nfd)
この関数の目的は、目検では異なって見える2つの文字列について正規化形式で同じか否を比較することだと理解しています。
例
String.equivalent?("abc", "abc")
true
合成文字ありの場合
・ñはunicodeのu\00f1
です。合成文字です。
・\u0303
はunicodeの̃
(ダイアクリティカルマーク)です。
String.equivalent?("n\u0303", "ñ")
true
String.equivalent?("man\u0303ana", "mañana")
true
String.firstとは
String.first(string)
はstring
の先頭の文字を返します。
例
String.first("elixir")
"e"
String.graphemesとは
下記をご参照ください
String.jaro_distanceとは
String.jaro_distance(string1, string2)
は2つの文字列間の類似度を計算します。
string1 と string2の類似度を表す0から1までの浮動小数点値(jaro distanceと呼ばれる値)を返します。
この関数の目的は、2つの文字列をマッチングし、typoを検出し「もしかして?」のサジェスト機能を提供することです。
例
String.jaro_distance("田中一郎", "田仲一郎")
0.8333333333333334
String.jaro_distance("String.last", "String.rast")
0.9393939393939394
String.lastとは
String.first(string)
はstring
の末尾の文字を返します。
例
String.last("elixir")
"r"
~Elixirの国のご案内~
↓Elixirって何ぞや?と思ったらこちらもどぞ。Elixirは先端のアレコレをだいたい全部できちゃいます
↓ゼロからElixirを始めるなら「エリクサーチ」がおすすめ!私もエンジニア未経験から学習中です。
↓We Are The Alchemists, my friends!2
Elixirコミュニティは本当に優しくて温かい人たちばかり!
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。3
-
nfdとは Normalization Form D: Canonical Decomposition の略記。合成文字を分解するという正規化形式の方法の一つです。 ↩
-
@torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。 ↩