パスワードを忘れた? アカウント作成
13452804 journal
日記

harupunteの日記: startsWith と IgnoreCase 3

日記 by harupunte

java で大文字小文字無視してstartsWithを使いたい時、str.toLower().startsWith("xxx")ってNGだったんか……なんでやろう。

あまり関係ないが最初にjavaを触ったころ、IDE使わず startWithって書いてエラーが取れなく、なんでぇと困ってた思い出。
変なところ英語だなぁ……わりといい加減なのに。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2017年11月11日 12時22分 (#3310633)

    PythonやJavascriptやPHP、C#どころかプログラム言語でさえないrsyslogとかでも普通に使われてるだろ
    逆にstart_withとかになった言語があったら、初めてcreat()見た時のような気分になるわ

  • by Anonymous Coward on 2017年11月11日 14時15分 (#3310683)

    >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だ。

    • by Anonymous Coward

      まえーに、スラドのどっかの日記にあったけど、「言語によって、(toLower相当とかで)意図しないことが...」みたいな話題になりましたね。

      本当は、厳密一致とあいまい一致(大文字小文字、ひらカナ、キリルか代替記法かとかみたいなのは、フラグで指定とか)くらいは、言語ライブラリで吸収しないといけないのかもしれませんね

typodupeerror

目玉の数さえ十分あれば、どんなバグも深刻ではない -- Eric Raymond

読み込み中...