半歩ずつでも前に進めば変わっていく

Kozue Blog

プログラミング 学習 記録

プログラミングで月収5万円になるまでの記録64日目

投稿日:

こんにちは、こずえです。
プログラミング学習記録64日目です。
JavaScriptについて学習しました。

所感:今週は忙しくなりそうです…!

合計学習時間

前回までの時間:129.00[h]
今回の時間:2.75[h]
合計時間:131.75[h]

学習内容

前回と同様に以下のサイトを読み進めていきました。

今回は「四章第一回 文字列の操作」から「四章第三回 正規表現2」までを読みました。

以下自分まとめです。

まとめるのに時間を掛け過ぎてしまうことで進みが遅くなっているため、今回は手を動かした分をそのまま記事にしてみました。

文字列の検索

console.group('---文字列の検索---');

	console.group('indexOf');

		var str = 'hoge';

		// 文字の位置を返す
		var idx1 = str.indexOf('g');
		var idx2 = str.indexOf('a');  // 存在しない場合は-1
		console.log({"idx1":idx1, 'idx2':idx2});  // {idx1: 2, idx2: -1}

	console.groupEnd();  // indexOf

console.groupEnd();  // ---文字列の検索---

文字列から指定の範囲を返す

console.group('---文字列から指定の範囲を返す---');

	/* slice */
	console.group('slice');

		var str = 'FooBarHoge';
		var str1 = str.slice(3, 6);  // 終了位置の1つ手前までが返される
		var str2 = str.slice(6, -1); // 負の値を指定した場合後ろから数える
		var str3 = str.slice(0);  // 第2引数を省略すると末尾まで

		// ↓ {str1: "Bar", str2: "Hog", str3: "FooBarHoge"}
		console.log({'str1':str1, 'str2':str2, 'str3':str3});

	console.groupEnd();  // slice

	console.group('substring');

		var str = 'FooBarHoge';
		var str1 = str.substring(0, 3);
		var str2 = str.substring(-2, 2);  // (0, 2)と同義
		var str3 = str.substring(5, -3);  // (5, 0)と同義

		// ↓ {str1: "Foo", str2: "Fo", str3: "FooBa"}
		console.log({'str1':str1, 'str2':str2, 'str3':str3});

	console.groupEnd();  // substring

	console.group('charAt');

		var str = 'hoge';

		// 1文字のみ返す
		var str1 = str.charAt(1);
		console.log({'str1':str1});  // {str1: "o"}

	console.groupEnd();  // charAt

console.groupEnd(); // ---文字列から指定の範囲を返す---

0詰め

console.group('---0詰め---');

	var num = 1234;
	var len = 5;
	var result = ("00000" + num).slice(5 * -1);

	console.log({'num':num, 'len':len, 'result':result});  // 01234

console.groupEnd();  // ---0詰め---

コードポイント

console.group('---コードポイント---');

	// ↓ {ホット \u28ff ドッグ \u{1F32D}: "ホット ⣿ ドッグ ?"}
	console.log({'ホット \\u28ff ドッグ \\u\{1F32D\}':'ホット \u28ff ドッグ \u{1F32D}'});

console.groupEnd();  // ---コードポイント---

正規表現

正規表現オブジェクトの作成と正規表現リテラル

// 正規表現オブジェクトの作成
var r1 = new RegExp('ab+c');
// 正規表現リテラル
var r2 = /ab+c/

testメソッド

console.group('testメソッド');

	// 正規表現オブジェクトの作成
	var r1 = new RegExp('ab+c');
	// 正規表現リテラル
	var r2 = /ab+c/

	var str1 = 'abbbc';
	var str2 = 'abbbd';
	var result1 = r2.test(str1);
	var result2 = r2.test(str2);

	// ↓ {r2: /ab+c/, str: "abbbc", result: true}
	// ↓ {r2: /ab+c/, str: "abbbd", result: false}
	console.log(
		{'r2':r2, 'str1':str1, 'result':result1},
		{'r2':r2, 'str2':str2, 'result':result2}
	);

console.groupEnd();  // testメソッド

matchメソッド

var str1 = 'abcabcbbbacabcbbbbabac';
var r1 = /bcb{3,}a/;
var result1 = str1.match(r1);

console.log({'str1':str1, 'r1':r1});
// ↓ result1
// ↓ ["bcbbba", index: 4, input: "abcabcbbbacabcbbbbabac", groups: undefined]
console.log('result1 = ', result1);
キャプチャ
console.group('キャプチャ');

	var str2 = "aabcbcacbuccb";

	console.group('あり');

		var r2 = /a(.{5})c/;
		var result2 = str2.match(r2);  // キャプチャあり

		// ↓ {result2[0]: "abcbcac", result2[1]: "bcbca"}
		console.log({
			'str2':str2,
			'r2':r2,
			'result2[0]':result2[0],
			'result2[1]':result2[1]
		});

	console.groupEnd();  // あり

	console.group('なし');

		var r3 = /a(?:.{5})c/;
		var result3 = str2.match(r3);  // キャプチャなし

		// ↓ {result3[0]: "abcbcac", result3[1]: undefined}
		console.log({
			'str2':str2,
			'r3':r3,
			'result3[0]':result3[0],
			'result3[1]':result3[1]
		});

	console.groupEnd();  // なし

console.groupEnd();  // キャプチャ

replace

console.group('replace');

	var str = 'HogeFooHogeFoo';
	var r1 = /(?:Foo)/;
	var rep_str = 'Bar';
	var result = str.replace(r1, rep_str); // 先頭から1パターンのみ置換される

	// ↓ {str: "HogeFooHogeFoo", r1: /(?:Foo)/, rep_str: "Bar", result: "HogeBarHogeFoo"}
	console.log({'str':str, 'r1':r1, 'rep_str':rep_str, 'result':result});

console.groupEnd();  // replace

フラグ

console.group('フラグ');

	console.group('iフラグ…大文字小文字を区別しない');

		// ↓ r=(/abc/i) str='ABCDE' ["ABC", index: 0, input: "ABCDE", groups: undefined]
		console.log('r=(/abc/i)', 'str=\'ABCDE\'', 'ABCDE'.match(/abc/i));

	console.groupEnd();  // iフラグ

	console.group('gフラグ…複数回マッチ(置換の際に便利)');

		// ↓ r=(/abc/gi) str='ABCDEABC' (2) ["ABC", "ABC"]
		console.log('r=(/abc/gi)', 'str=\'ABCDEABC\'', 'ABCDEABC'.match(/abc/gi));

	console.groupEnd();  // gフラグ


console.groupEnd();  // フラグ

便利だと感じた情報

console.logの様々な活用方法がまとめられています。

今回読みながら手を動かす際にconsole.group()を活用してみました。今回のログは以下のようになりました。このような形式であれば続けて書き続けてもソースと結果の対応がわかりやすいですね。

console.group

-プログラミング, 学習, 記録
-, ,

Copyright© Kozue Blog , 2019 All Rights Reserved Powered by STINGER.