こんにちは、さるまりんです。
今日はプログラミングのお話です。
プログラミング言語って隅々まで覚えているエンジニアの方もいらっしゃるかもしれません。
僕はそこまでは覚えてなくていろんなことを書き始める前によく調べ物をします。
でも毎回調べるのが面倒だなぁと思っていました。
必要に応じて書く。それはそれでいいのですが、毎度毎度のことなのでここに書いてあれば、すぐ使えるかな、いつかは便利機能一覧にでも成長して欲しいと思っています。
startsWith in PHP
文字列が特定の文字列で始まるか調べるのってどうやるんでしょう。
これですがJava
ではstartsWith
、JavaScript
でもstartsWith
、C#
ではStartsWith
で簡単に調べることができます。
PHP
ではそのものの関数はないようです。正規表現を使ったら簡単にできるのかなって思いますが、ちょい苦手なんです。勉強しなければいけませんね。それはまたの機会にして今回はstartsWith
です。
こんな風に実装しました。
/**
* 文字列$haystackは$needleで始まる?
*/
public static function starts_with($haystack, $needle) {
return $needle === ""
|| substr($haystack, 0, strlen($needle)) === $needle;
}
strlen()
は文字列の長さを調べます。そしてsubstr()
は文字列からその始まりと長さを指定して一部分を取り出す関数です。
上の実装では$haystack
の0番目、最初の文字から$needle
の長さ分の文字列を取り出して、それを$needle
と比較しています。
言葉で書くとなんかわかりにくいですね。僕の説明がうまくないのですが。
こんな感じで調べてます。
haystack : "I like Chopin."
needle : "I like"
strlen("I like") -> 6
substr("I like Chopin", 0, 6) -> "I like"
"I like" === "I like" -> TRUE
一致しました!
一致しない場合はこんな感じです。
needle : "You love"
strlen("You love") -> 8
substr("I like Chopin", 0, 8) -> "I like C"
"I like C" === "You love" -> FALSE
一致しませんでした!
こんな風にしてstartsWith
を実装しました。
今回はこんな風に実装しましたが、実装方法は一つじゃないです。
もっと効率よく動作する実装もあるかもしれないですね。
速いやつ、メモリを使わないやつ。
書き方もそうです。上で触れた正規表現を使うともっとシンプルに書けるかもしれないです。
色々試して良いものを探していきたいと思います。また良いものを見つけたら書かせてくださいね。
まずはこの実装を忘れないようにします。
あ、そうです。startsWith
を書いたのだからendsWith
もですよね。
また書かせてくださいね。
読んでくださってありがとうございます。
ではまた!