javascript言語の問題に下のような問題がありましたが、よくわかりませんでした。
文字列の中から電話番号(の数字部分だけ)を取り出す関数を作成する。
function denwa(s)
{
var k;
k = s.match(/([0-9]{3})-([0-9]{4}/);
if(k != null)
{
return k[1]+k[2];
}
return"not found";
}
var adres, i;
adres = [
"taro 234-1111",
"jiro 34-2222",
"sburo (987)3333",
"haruko 080(333)4444 keitai",
"natuko,0789(555)6666,jitaku",
"akiko03-1234-5678office"
];
for(i in adres)
{
print(denwa(adres[i]));
}
アドレス帳(配列 address)には6人分のデータがあり、for in文を使い順次関数を呼びだす、
関数denwa では数字3桁の後ろにハイフンが続き、さらに数字4桁が続くパターンを使ってマッチングを行っている。taroさんの結果は正しく表示されるが、ほかのデータに対しては望んだ結果が得られない。
[実行例]
2341111
not found
上のものを修正し、市街局番を含め6人分の書き方に対応させるにはどうすればよいでしょうか?
No.3ベストアンサー
- 回答日時:
function denwa(s)
{
var k = s.match(/(\d{2,4})/g);
if(k == null) return "not found";
var ret = '';
for(var i = 0; i < k.length; i++) ret += k[i];
return ret;
}
var i;
var adres = [
"taro 234-1111",
"jiro 34-2222",
"sburo (987)3333",
"haruko 080(333)4444 keitai",
"natuko,0789(555)6666,jitaku",
"akiko03-1234-5678office"
];
for(i in adres)
{
print(denwa(adres[i]));
}
No.2
- 回答日時:
> "taro 234-1111",
> "jiro 34-2222",
> "sburo (987)3333",
> "haruko 080(333)4444 keitai",
> "natuko,0789(555)6666,jitaku",
> "akiko03-1234-5678office"
特定の言語での記述方法を考える前にまず、、、
「各行から電話番号を抜き出すということは具体的にどういう方法をとればよいか?」
「出力はどういう形式にするか」
の二つを考えることです。
この問題の場合、入力形式は決まっているので考える必要は無いと。
そしてその基本的な方針に沿って処理手順を具体的に日本語でまとめてみることです。これは頭の中だけでもよいです。
で。特定のプログラム言語で書かれたプログラムの意味を解する際も同様です。
この問題の場合プログラムにさせたいこと(=入力と出力)はわかっているわけで、それを実現するには「自分ならこうするなぁ」というのがある程度頭にあった上で問題のプログラムを見ると、「やっぱりそうか」とか「ん? これは俺の考えと違う」というようなことがあって「このプログラムはこういうことをやっているのか」と読み解けると。。。
しかもプログラムを実行した結果(入力データの1個目しか要求仕様とおりに動かない)も示されているのですから、「これじゃこの結果になるよね」という原因の在りかも読み取りやすいと思います。
No.1
- 回答日時:
function denwa(s){
var k,ret;
s = s.replace(/(\d)[\(\)](\d)/g,"$1-$2"); // 数字の間の括弧 '(', ')' をハイフン'-'に置換
k = s.match(/(?:(\d{1,4})-)?(\d{1,4})-(\d{4})/);
if(k != null){
if(k[1] != undefined){ret = k[1]+k[2]+k[3];}
else{ret = k[2]+k[3];}
return ret;
}else{
return "not found";
}
}
var adres, i;
adres = [
"taro 234-1111",
"jiro 34-2222",
"sburo (987)3333",
"haruko 080(333)4444 keitai",
"natuko,0789(555)6666,jitaku",
"akiko03-1234-5678office"
];
for(i in adres){
document.writeln(denwa(adres[i]));
}
</script>
このような感じでいかがでしょうか?
やってることは、数字の間の括弧をハイフンに変更してからmatchしています
"taro 234-1111" → "taro 234-1111"
"jiro 34-2222" → "jiro 34-2222"
"sburo (987)3333" → "sburo (987-3333"
"haruko 080(333)4444 keitai" → "haruko 090-333-4444 keitai"
"natuko,0789(555)6666,jitaku" → natuko,0789-555-6666,jitaku"
"akiko03-1234-5678office" → akiko03-1234-5678office"
市外局番等の部分はオプションでマッチさせることで、省略してもしなくてもマッチさせることができます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript JavaScriptの即時関数の書き方 1 2022/11/29 09:52
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- その他(プログラミング・Web制作) pythonのmap、結果の利用は1度だけ? 5 2022/06/11 12:33
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
1日1回引けるJavaScriptおみく...
-
canvas上で画像を移動する方法...
-
var_dumpのdump意味はを知りた...
-
googleスプレッドシートのApps ...
-
GASでundefinedエラーが出ます
-
Google Maps V3のズームの規制
-
どうすれば良いでしょうか?
-
HTMLにWSHを組み込む
-
翌月を取得するGASが分かりません
-
ジェネレーターの作り方
-
ASP.NETのコントロールの値をJa...
-
C言語の質問です HTMLでこのよ...
-
指定日数経過でHTML上のデータ...
-
なぜmatchメソッドがエラーにな...
-
gas スプレッドシートがアクテ...
-
onchangeイベントを使ってspan...
-
同じIDで定義した要素の配列を...
-
Click回数を数え、規定された回...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
var exports = exports || {}; ...
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
HTMLで作った時報アプリが動き...
-
javascriptでテーブルに追加し...
-
html javascript リンク先アド...
-
【西暦等の変換】
-
ローカルにあるファイルを検索...
-
ASP.NETのコントロールの値をJa...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
gas スプレッドシートがアクテ...
-
ASP.NET MVCでObjectをjsに渡す
-
カンマで終わってるのはセミコ...
-
JavaScriptで文字列の特定文字...
-
javascriptでiframeのURL変更は?
-
APIを使って埋め込んだグーグル...
おすすめ情報