-
-
Notifications
You must be signed in to change notification settings - Fork 224
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(string): 文字列の比較 #194
feat(string): 文字列の比較 #194
Conversation
source/basic/string/README.md
Outdated
"JS" === "ES"; // => false | ||
``` | ||
|
||
この比較演算子による文字列比較は、次のような比較が行われています。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
何か言い回しが奇妙
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
この時、同じ文字列は次を満たすものとして定義されます
とか?(さらに硬い)
source/basic/string/README.md
Outdated
- 文字列の要素であるCode Unitが同じ順番で並んでいる | ||
- オペランドの文字列は同じ長さである | ||
|
||
同様に`>`や`<`などの比較演算子で文字列同士を比較することもできます。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これ >
とか <
をまとめた用語ってあるっけ?
===
を除いた比較演算子
source/basic/string/README.md
Outdated
この比較演算子による文字列比較は、次のような比較が行われています。 | ||
|
||
- 文字列の要素であるCode Unitが同じ順番で並んでいる | ||
- オペランドの文字列は同じ長さである |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
この時 true となるという雰囲気を伝えたい
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ちょっと国際化APIを絡ませたせいで難しくなりすぎている。
+このように、JavaScriptの文字列比較はCode Unitがベースとなります。
までで終わらせてしまうのもありかな
source/basic/string/README.md
Outdated
"ABC" > "ABD"; // => false | ||
``` | ||
|
||
文字列同士に対する`>`(大なり演算子)は次のような処理が行われていると考えられます。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
行われています。
と言い切っ他方がよさそう
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
それは規格で何か言っていたりしますか?
source/basic/string/README.md
Outdated
``` | ||
|
||
文字列の比較においては、単純な比較であれば、`===`(厳密比較演算子)や`>`(大なり演算子)を利用します。 | ||
その国においてのより自然な形を求める場合は、地域化するために国際化APIなどを利用できます。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
地域化するために国際化APIなどを利用できます。
これって用語として正しい?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
地域化
localizationと言ってしまう方が通じるのではという思い。internationalizationの訳としての国際化は定着してるけど、localizationの訳としての地域化は定着していない気がする。
WIkipediaには国際化と地域化という記事がありますが、これは最初の翻訳のときにとりあえず地域化と訳して、特に変えるほどの必要性に迫られなかったためそのままにしているようです。(というよりソフトウェア工学じゃない国際化を書こうとしたユーザーとの編集合戦でそれどころではなかった模様)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
なるほど。
たしかにローカライズの方が分かりやすいですね。(最初そっちで書いてたのですが、漢字に揃えたほうが分かりやすいのかなーと思って地域化にしちゃってました)
source/basic/string/README.md
Outdated
また、文字列の並びは国ごとの言語によって異なる場合があります。 | ||
このように、Code Unitの比較は必ずしも期待する結果とは異なる場合があります。 | ||
|
||
このように文字列の処理は、国ごとに自然となる形が異なるため、地域化(ローカライズ)する必要があります。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
この辺リズムが良くないので治す必要がありそう
"このように" が連続している
source/basic/string/README.md
Outdated
このように文字列の処理は、国ごとに自然となる形が異なるため、地域化(ローカライズ)する必要があります。 | ||
JavaScriptでは、ECMAScriptの関連仕様として国際化APIが用意されています。 | ||
|
||
この書籍では詳しく紹介しませんが、国際化APIは`Intl`オブジェクトにあり、言語に依存した整形や比較などが利用できます。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
多分、紹介するの難しい気がするんだよなー
source/basic/string/README.md
Outdated
// 文字列を対象にした > の実装 | ||
function largeThan(a, b) { | ||
// Code Unitごとに1つづつ > で比較する | ||
return a.split("").some((codeUnit, index) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
split("")
のイディオムをあえて使うべきか迷うな
この書籍では詳しく紹介しませんが、国際化APIは`Intl`オブジェクトにあり、言語に依存した整形や比較などが利用できます。 | ||
`Intl`オブジェクトはECMAScriptの関連する仕様という立ち位置であるため、すべての実行環境で実装されているわけではありません。 | ||
|
||
ブラウザにおけるサポート状況については[Can I use...][]で見ることができます。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
他にいいまとめサイトあるかな?
source/basic/string/README.md
Outdated
"JS" === "ES"; // => false | ||
``` | ||
|
||
この比較演算子による文字列比較は、次のような比較が行われています。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
この時、同じ文字列は次を満たすものとして定義されます
とか?(さらに硬い)
source/basic/string/README.md
Outdated
"ABC" > "ABD"; // => false | ||
``` | ||
|
||
文字列同士に対する`>`(大なり演算子)は次のような処理が行われていると考えられます。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
それは規格で何か言っていたりしますか?
source/basic/string/README.md
Outdated
"10" < "2";// => true | ||
``` | ||
|
||
また、文字列の並びは国ごとの言語によって異なる場合があります。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ロケールと言語は一致しないので誤りでは?(en_USとen_GBが反例)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
それは規格で何か言っていたりしますか?
https://tc39.github.io/ecma262/#sec-abstract-relational-comparison
ただあんまり正確ではない気がしています。
意図としては、先頭から異なる文字(Code Unit)同士を比較するという処理なので、 "10" > "2" // false みたいなことがありますよということを示したいコードですね。
(正直いらないかなと思ってきました)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ロケールと言語は一致しないので誤りでは?
地域や言語によって
かな。(国もおかしいなケースがありそうなので)
source/basic/string/README.md
Outdated
``` | ||
|
||
文字列の比較においては、単純な比較であれば、`===`(厳密比較演算子)や`>`(大なり演算子)を利用します。 | ||
その国においてのより自然な形を求める場合は、地域化するために国際化APIなどを利用できます。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
地域化
localizationと言ってしまう方が通じるのではという思い。internationalizationの訳としての国際化は定着してるけど、localizationの訳としての地域化は定着していない気がする。
WIkipediaには国際化と地域化という記事がありますが、これは最初の翻訳のときにとりあえず地域化と訳して、特に変えるほどの必要性に迫られなかったためそのままにしているようです。(というよりソフトウェア工学じゃない国際化を書こうとしたユーザーとの編集合戦でそれどころではなかった模様)
文字列の比較
===
#121