配列に
test[0]='●あいうえお*かきく*▲さしすせ*'
test[1]='●あいう*かきく*●さしすせ*'

とあって

●より*を削除したいのですが、
一文字ずつ比較して削除していくしかないのでしょうか?

これとは別の
スマートな方法がありますでしょうか?

A 回答 (3件)

●から一番直近の*まで消す場合は、


パターンを
/●.*?\*/g
にします。
    • good
    • 0

Web屋です。

OkWebの様なサイトを設計開発する仕事をしています。
専門はPerlなので、JavaScriptはあまり触らないのですが。。。

>●より*を削除したいのですが、

ですが。正規表現で表現すると、/●.*\*/ となるのですが、
なぜかJavaScriptでは\*が旨く動作してくれませんでした。
僕の知識不足かも知れませんが。

代わりに、●~▲を削除する。と言うスクリプトにさせていただきました。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<meta http-equiv="content-language" content="ja">
<meta http-equiv="content-script-type" content="text/javascript">
<script type="text/javascript">
<!--
function conv() {
var i;
test = new Array(2);
rtest = new Array(2);

test[0] = '●あいうえお*かきく*▲さしすせ*';
test[1] = '●あいう*かきく*●さしすせ*';

for (i in test) {
rtest[i] = test[i].replace(/●.*▲/, "");
}

document.writeln('<table border="1">');
for (i in test) {
document.writeln('<tr><td>' + i + '</td><td>' + test[i] + '</td><td>' + rtest[i] + '</td></tr>');
}
document.writeln('</table>');
}
// -->
</script>
<title>置換のテスト</title>
</head>
<body>
<script type="text/javascript">conv();</script>
</body>
</html>

こんな感じで良いと思います。

>rtest[i] = test[i].replace(/●.*▲/, "");

の部分が、置換(削除)処理の部分です。
この部分の正規表現を、意図したい様に記述すれば削除できます。
基本は、●の部分が開始文字▲の部分が終了文字です。途中に、.*を挟みます。
その部分を""に置換する。と言う事で、削除が実行されます。

不明点があれば再度質問してください。
    • good
    • 0

>●より


の意味がよくわかりませんが
*を文字列から全部削除したいのなら
test[0]='●あいうえお*かきく*▲さしすせ*';
var re=/\*/g;
test[0]=test[0].replace(re,"");
の様にします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング