Webサイト専門プログラマの言いたい放題

元システムエンジニアがサイト制作とプログラミングについて好き放題しゃべります。

文字列編集はプログラミングの必須テーマ(JavaScript版)

f:id:wp-lesson:20150830131550j:plain
プログラミングにおいて、文字列の長さに応じて処理を変えたり
所定の文字数までで切り取ったりする「文字列編集」は、様々な
場面で必要になります。

従って、JavaScriptを含む多くのプログラム言語では、データを
文字列として扱うための様々な「関数」が用意されています。

なので、言語が違っても関数の名前や使い方は非常に似ています。

「言語名+文字列の長さ+関数」

といった組み合わキーワードでGoogle検索すれば、大抵の文法は
見つかります。だから恐れることなんて何もないわけです。

今回のご質問内容

RSSXMLデータからブログの投稿日付を取り出した結果をHTMLに
そのまま埋め込むと、2015/9/5のように表示されてしまうので、
2015/09/05のように月日を「前ゼロ付き」の2桁表示にしたい。

生徒さんが採用した考え方

■桁数に着目した考え方

if (date < 10) {date = "0" + date;}

日付は必ず1桁か2桁のどちらかしか存在しないというルールを利用して、
1桁だったら前に文字として0を付加するという考え方ですね。

論理的に何も矛盾しませんし、
プログラムを見れば、上記のような考え方がすぐに読み取れるという点で
良い方法だと思います。

アドバイスさせていただいた方法

プログラムは「手段」です。

同じ結果を実現するための方法は何通りもあります。
答えは1つではないということです。

生徒さんの方法は、プログラム開発の現場でもよく使われる考え方。
全く論理的に矛盾がありませんので、正しい方法の1つです。

別の考え方として、次のような方法もあります。

■桁数に着目した考え方

if (date.length <=1) { date = "0" + date; }

上記と発想は全く同じですが、
日付の数値を調べる代わりに、日付の文字列長を調べています。

JavaScriptをはじめ、多くのプログラム言語には「データ型」があり、
多くの場合、文字列型の変数には「自分自身の文字数」を返すための
プロパティがあります。

プロパティは、[変数名].[プロパティ名] のように記述します。



■0を付けてから下2桁だけを切り出す考え方

date = "0" + date;
date = date.slice(-2);

日付がいつであろうと関係なく、強制的に0を付加してから、
右から2桁(2桁というより、2文字分という感じ)を切り出しています。

18日なら、"018" の後ろ2文字が切り出されるので "18" になります。
9日なら、"09" の後ろ2文字が切り出されるので "09" になります。

データの桁数を意識しなくても、
必ず前0付きの2桁に加工されるという発想です。

slice関数の使い方は「javascript slice」などで検索してみてください。

プログラミング上達に必要な素養とは?

プロのプログラマーでも、
一つ一つの言語の一つ一つの関数を全て暗記しているわけではありません。

暗記しなくても、辞書を引く感覚でネット検索するのです。


プログラミング上達のコツは


「検索して調べるクセを付けること」


これをするから調べ方が身に付き、
独学でも挫折せずにスキルアップし続けることができるのです。

プログラミング講座のご案内

2015年12月現在、まだ初級コースだけですが、

【期間限定】クリスマス前日までのお申し込み

に限り、特別価格にてご参加いただけます。

↓↓↓ 仮登録フォームはこちら ↓↓↓
docs.google.com

※仮登録いただいた方には講座の詳細をご連絡させていただきます。
※仮登録は受講枠の仮押さえとお考えください。
 本登録するまで料金は発生しませんのでご安心ください。


f:id:wp-lesson:20150822170414j:plain