PHPで文字列の最後の単語の長さを取得する方法
文字列の中で最後の単語の長さを求めたい場合、PHPの組み込み文字列関数を組み合わせることで簡単に実装できます。ここでは、「strrpos」「substr」「strlen」の3つの関数を使ったサンプルコードと、その仕組みをわかりやすく解説します。
サンプルコード
<?php
function last_word_len($my_string){
$position = strrpos($my_string, ' ');
if(!$position){
$position = 0;
} else {
$position = $position + 1;
}
$last_word = substr($my_string,$position);
return strlen($last_word);
}
print_r("The length of the last word is ");
print_r(last_word_len('Hey')."\n");
print_r("The length of the last word is ");
print_r(last_word_len('this is a sample')."\n");
?>
出力結果
The length of the last word is 3 The length of the last word is 6
'Hey' のようにスペースを含まない文字列の場合は文字列全体の長さ(3)、'this is a sample' の場合は最後の単語「sample」の長さ(6)が出力されていることがわかります。
コードの解説
まず、文字列を引数として受け取る「last_word_len」という名前の関数を定義します。
function last_word_len($my_string)
{
//
}
次に、「strrpos」関数を使って、文字列内で最後にスペースが出現する位置を検索します。スペースが見つからなかった場合(戻り値が false の場合)は位置を 0 とし、文字列全体を最後の単語として扱います。スペースが見つかった場合は、位置に 1 を加算することで、スペースの直後から最後の単語が始まるように調整します。
$position = strrpos($my_string, ' ');
if(!$position){
$position = 0;
} else{
$position = $position + 1;
}
続いて、「substr」関数で特定した位置以降の部分文字列(=最後の単語)を取り出し、「strlen」関数でその長さを計算して返します。
関数の外側では、2つの異なるサンプル文字列を引数として関数を呼び出し、「print_r」を使って結果を画面に出力しています。
補足:より安全な実装にするには
この実装では、文字列の末尾に余分なスペースやタブが含まれている場合、意図した結果が得られないことがあります。そのようなケースに備えるには、処理の最初に「rtrim」関数で末尾の空白文字を取り除いておくと安心です。
$my_string = rtrim($my_string); $position = strrpos($my_string, ' ');
-
JavaScriptで文字列内の2番目に短い単語の長さを取得する関数の実装方法
はじめに 本記事では、JavaScriptで文字列の中から2番目に短い単語の長さを返す関数を実装する方法を解説します。引数として文章(文字列)を1つ受け取り、その中の単語を調べて、2番目に短い単語の文字数を出力するのが目的です。 例えば、次のような文字列が与えられた場合を考えてみましょう。 const str = This is a sample string; この文字列の場合、最も短い単語は「a」(1文字)、2番目に短い単語は「is」(2文字)であるため、出力は 2 となります。 コード例 それでは、この関数の実装を見ていきましょう。 {
-
連結リスト(リンクリスト)の長さを求めるC言語プログラム
連結リスト(リンクリスト)は動的メモリ割り当てを利用するデータ構造であり、要素の追加や削除に応じてサイズが柔軟に変化します。連結リストは「ノード」と呼ばれる要素の集合として定義され、各ノードはデータ部とリンク部(次のノードへのポインタ)の2つの部分で構成されています。データ・リンク・連結リストの関係は、以下のように表現できます。連結リストの種類連結リストには主に以下の4種類があります。単方向連結リスト(シングルリンクリスト)双方向連結リスト(ダブルリンクリスト)循環単方向連結リスト循環双方向連結リスト再帰を使って長さを求めるロジック本記事では、再帰呼び出しを利用して連結リストの長さ(ノード数)