harupunteの日記: startsWith と IgnoreCase 3
日記 by
harupunte
java で大文字小文字無視してstartsWithを使いたい時、str.toLower().startsWith("xxx")ってNGだったんか……なんでやろう。
あまり関係ないが最初にjavaを触ったころ、IDE使わず startWithって書いてエラーが取れなく、なんでぇと困ってた思い出。
変なところ英語だなぁ……わりといい加減なのに。
java で大文字小文字無視してstartsWithを使いたい時、str.toLower().startsWith("xxx")ってNGだったんか……なんでやろう。
あまり関係ないが最初にjavaを触ったころ、IDE使わず startWithって書いてエラーが取れなく、なんでぇと困ってた思い出。
変なところ英語だなぁ……わりといい加減なのに。
目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond
startswithって慣用句みたいなもんだろ (スコア:0)
PythonやJavascriptやPHP、C#どころかプログラム言語でさえないrsyslogとかでも普通に使われてるだろ
逆にstart_withとかになった言語があったら、初めてcreat()見た時のような気分になるわ
immutable (スコア:0)
>str.toLower().startsWith("xxx")ってNGだったんか……
Stringが不変オブジェクトである以上は、String#toLower()で無駄なStringオブジェクトが生成されるからでは?
無駄な物は作らないが吉。ただし最近のJavaVMでは高度に最適化されるから、ほぼ関係ないと思うけど。
https://docs.oracle.com/javase/jp/6/api/java/lang/String.html#toLowerCase() [oracle.com]
>このメソッドはロケールに依存するため、ロケールが単独で解釈されるような文字列に使用すると、予期せぬ結果を引き起こすことがあります。
言われてみれば、そりゃそうか。
#たとえば日本語にはカタカナ/ヒラガナはあっても、大文字/小文字という区別は無い。
#ドイツ語だとエスツェット(βみたいなの)の大文字表記はSSだ。
Re: (スコア:0)
まえーに、スラドのどっかの日記にあったけど、「言語によって、(toLower相当とかで)意図しないことが...」みたいな話題になりましたね。
本当は、厳密一致とあいまい一致(大文字小文字、ひらカナ、キリルか代替記法かとかみたいなのは、フラグで指定とか)くらいは、言語ライブラリで吸収しないといけないのかもしれませんね