2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Stringモジュールで遊んでみたシリーズ③ -String.equivalent? ~ String.last の紹介

Last updated at Posted at 2024-11-24

こんにちは!
プログラミング未経験文系出身、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)string1string2が正規化形式で同じか否かをチェックします。
この関数は下記のパターンマッチと同じです。1

iex
String.normalize(string1, :nfd) == String.normalize(string2, :nfd)

この関数の目的は、目検では異なって見える2つの文字列について正規化形式で同じか否を比較することだと理解しています。

iex
String.equivalent?("abc", "abc")
true

合成文字ありの場合
 ・ñはunicodeのu\00f1です。合成文字です。
 ・\u0303はunicodeの̃ (ダイアクリティカルマーク)です。

iex
String.equivalent?("n\u0303", "ñ")
true
iex
String.equivalent?("man\u0303ana", "mañana")
true

String.firstとは

String.first(string)stringの先頭の文字を返します。

iex
String.first("elixir")
"e"

String.graphemesとは

下記をご参照ください

String.jaro_distanceとは

String.jaro_distance(string1, string2)は2つの文字列間の類似度を計算します。
string1 と string2の類似度を表す0から1までの浮動小数点値(jaro distanceと呼ばれる値)を返します。
この関数の目的は、2つの文字列をマッチングし、typoを検出し「もしかして?」のサジェスト機能を提供することです。

iex
String.jaro_distance("田中一郎", "田仲一郎")
0.8333333333333334
iex
String.jaro_distance("String.last", "String.rast")
0.9393939393939394

String.lastとは

String.first(string)stringの末尾の文字を返します。

iex
String.last("elixir")
"r"

~Elixirの国のご案内~

↓Elixirって何ぞや?と思ったらこちらもどぞ。Elixirは先端のアレコレをだいたい全部できちゃいます:laughing::sparkles::sparkles:

↓ゼロからElixirを始めるなら「エリクサーチ」がおすすめ!私もエンジニア未経験から学習中です。

We Are The Alchemists, my friends!:bouquet:2
Elixirコミュニティは本当に優しくて温かい人たちばかり!
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。3

  1. nfdとは Normalization Form D: Canonical Decomposition の略記。合成文字を分解するという正規化形式の方法の一つです。

  2. @torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。

  3. @kn339264さんの素敵なスライドをお借りしました。Elixirコミュニティはいろんな形で活動中!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?