JScript+WSHでプログラミング基礎100本ノック その94~100 正規表現3
その94 文字数指定の検索
文字列を格納した配列を作成し、指定された文字を検索して、すべての要素をプロンプトに表示してください。
仕様
・変数 arrは下記の通りとすること
["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs"]
・文字数が4文字の要素のみ表示すること
ヒント
・正規表現で文字の個数を指定する場合は {[数]} で可能
コード例
var arr = ["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs"];
for(var i = 0; i < arr.length; i++){
if(arr[i].search(/^.{5}$/) > -1 ){
WScript.echo(arr[i]);
}
}
出力結果
spam
eggs
続行するには何かキーを押してください . . .
その95 文字の置換
文字列を格納した配列を作成し、指定された文字を検索して、すべての要素をプロンプトに表示してください。
仕様
・変数 arrは下記の通りとすること
["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs"]
・上記の文字列をアルファベットだけにすること
ヒント
・正規表現を用いた文字の置換は" str.replace(/[検索文字]/, [置換後の文字]) "で可能
・複数の文字を置換する場合は" str.replace(/[検索文字]/g, [置換後の文字]) "で可能
コード例
※別解は沢山あります
var arr = ["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs"];
for(var i = 0; i < arr.length; i++){
WScript.echo(arr[i].replace(/\d|\.|\s/g, ""));
}
出力結果
foo
bar
buz
hoge
fuga
piyo
spam
ham
eggs
続行するには何かキーを押してください . . .
その96 文字の置換
文字列を格納した配列を作成し、指定された文字を検索して、すべての要素をプロンプトに表示してください。
仕様
・変数 arrは下記の通りとすること
["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs", "6_aaa"]
・上記の文字列を"01_foo","02_bar",…"10_aaa"とすること
ヒント
・正規表現を用いた文字の置換は" str.replace(/[検索文字]/, [置換後の文字]) "で可能
・複数の文字を置換する場合は" str.replace(/[検索文字]/g, [置換後の文字]) "で可能
コード例
※別解は沢山あります
var arr = ["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs", "6_aaa"];
for(var i = 0; i < arr.length; i++){
WScript.echo(("0" + (i+1)).slice(-2) + "_" + arr[i].replace(/\d|\.|\s|_/g, ""));
}
出力結果
01_foo
02_bar
03_buz
04_hoge
05_fuga
06_piyo
07_spam
08_ham
09_eggs
10_aaa
続行するには何かキーを押してください . . .
その97 文字の置換
文字列を格納した配列を作成し、指定された文字を検索して、すべての要素をプロンプトに表示してください。
仕様
・変数 arrは下記の通りとすること
["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs", "6_aaa"]
・上記のうち、数値から始まる文字列をアルファベットだけにすること
・置換は行わないこと
ヒント
・matchを用いて正規表現で検索すると、()で囲った部分を配列に格納することができる。動きは下記の通り。
var arr = "1.hoge".match(/(\d)\.([a-z]*)/)
WScript.echo(arr[0]); // -> 1.hoge
WScript.echo(arr[1]); // -> 1
WScript.echo(arr[2]); // -> hoge
コード例
var arr = ["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs", "6_aaa"];
for(var i = 0; i < arr.length; i++){
if(arr[i].search(/\d[\.|_][a-z]*/) > -1){
var arrTemp = arr[i].match(/(\d)[\.|_]([a-z]*)/);
WScript.echo(arrTemp[2]);
}
}
出力結果
hoge
fuga
piyo
aaa
続行するには何かキーを押してください . . .
その98 文字の置換
文字列を格納した配列を作成し、指定された文字を検索して、すべての要素をプロンプトに表示してください。
仕様
・変数 arrは下記の通りとすること
["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs", "6_aaa"]
・上記の文字列のうち、先頭に数字だったものの数字を+1してプロンプトに表示すること
・表示する場合は2-hoge、7-aaaといった形で"[数字]-[文字列]"とすること
ヒント
・文字列を数値に変える場合、"parseInt([文字列])"で変換可能
コード例
var arr = ["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs", "6_aaa"];
for(var i = 0; i < arr.length; i++){
if(arr[i].search(/\d[\.|_][a-z]*/) > -1){
var arrTemp = arr[i].match(/(\d)[\.|_]([a-z]*)/);
WScript.echo((parseInt(arrTemp[1]) + 1) + "-" + arrTemp[2]);
}
}
出力結果
2-hoge
3-fuga
4-piyo
7-aaa
続行するには何かキーを押してください . . .
その99 文字の表示
文字列を格納した配列を作成し、指定された文字を検索して、すべての要素をプロンプトに表示してください。
仕様
・変数 arrは下記の通りとすること
["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs", "6_aaa"]
・末尾が母音(a,i,u,e,o)の要素を先頭から3つまでを表示すること
ヒント
・なし
コード例
var arr = ["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs", "6_aaa"];
var counter = 0;
for(var i = 0; i < arr.length; i++){
if(arr[i].search(/[aiueo]$/) > -1){
WScript.echo(arr[i]);
counter++;
}
if(counter == 3) break;
}
出力結果
foo
1.hoge
2.fuga
続行するには何かキーを押してください . . .
その100 文字の表示
文字列を格納した配列を作成し、指定された文字を検索して、すべての要素をプロンプトに表示してください。
仕様
・変数 iarrは下記の通りとすること
["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs", "6_aaa"]
・変数oarrに下記を格納すること
1文字目がアルファベットであれば加工せず要素を格納する
1文字目がアルファベット以外であれば、元の文字を格納した直後に、アルファベットのみの行を格納する
・oarrは["foo","bar","buz","1.hoge","hoge","2.fuga","fuga"…"6_aaa","aaa"]となる
ヒント
・なし
コード例
var iarr = ["foo","bar","buz","1.hoge","2.fuga","3.piyo"," spam"," ham"," eggs", "6_aaa"];
var oarr = []
for(var i = 0; i < iarr.length; i++){
oarr.push(iarr[i]);
if(!(iarr[i].search(/^[a-z]/) > -1)){
oarr.push(iarr[i].replace(/\d|\.|\s|_/g,""));
}
}
for(var i = 0; i < oarr.length; i++){
WScript.echo(oarr[i]);
}
出力結果
foo
bar
buz
1.hoge
hoge
2.fuga
fuga
3.piyo
piyo
spam
spam
ham
ham
eggs
eggs
6_aaa
aaa
続行するには何かキーを押してください . . .