アプリ版:「スタンプのみでお礼する」機能のリリースについて

<textarea name="areaA" rows="4" cols="40"></textarea><br>

<input type="button" onclick="...">

<textarea name="areaB" rows="4" cols="40"></textarea><br>

という風な2つのテキストエリアとボタンを使い、
テキストエリアに文字を書いてもらい、
ボタンを押すと任意の行を置換したいです。

たとえば
------------------
#あああああ
いいいいい
#ううううう
えええええ
------------------

というものを、ボタンを押すと先頭に#がついた行だけ置換して

------------------
<部品1>あああああ<部品2>
いいいいい
<部品1>ううううう<部品2>
えええええ
------------------

という風なscriptを組みたいのですが、正規表現等が苦手でまったくうまくいきません。
ご教授いただけないでしょうか?

A 回答 (2件)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">


<title>test</title>
<body>
<form name="obj">
<p>
<textarea id="textA" rows="10" cols="70">
#a
b
</textarea>
</p>
<p>
<input type="button" onClick="change2()" value=" 変 換 ">
</p>
<p>
<textarea id="textB" rows="10" cols="70">
</textarea>
</p>

</form>
<script type="text/javascript">
function change() {
var text = '';
var array = document.getElementById('textA').value.split('\r\n');
for (var i = 0; i < array.length; i++) {
if (array[i].match(/^#/)) {
text += "Sun" + array[i] + "Mon\r\n";
} else {
text += array[i];
}
}
document.getElementById('textB').value = text;
}
function change2() {
var s, str = '', count = 0;
var array = document.getElementById('textA').value.replace(/\r/g,'').split('\n');

while (s = array[count++]) str += (s.match(/^#/))? 'Sun' + s + 'Mon\n': s;
document.getElementById('textB').value = str;
}
</script>
    • good
    • 0
この回答へのお礼

ありがとうございます。
とても参考なしました。
以下のもので落ち着きました。


<script type="text/javascript"><!--


Com = new Array()
Com[0] = "<部品1>";
Com[1] = "<部品2>";


function change() {
var array = document.getElementById('textA').value.split('\r\n');
for (var i = 0; i < array.length; i++) {
if (array[i].match(/^# |^#/)) {
obj.textB.value += Com[0] + array[i].replace(/^# |^#/,"") + Com[1] + "\n";
} else {
obj.textB.value += array[i] + "\n";
}
}
}


// --></script>

</head>

<body>

<form name="obj">

<p><textarea id="textA" rows="10" cols="70">
あああああ
#いいいいい
ううううう
# えええええ
おおおおお</textarea></p>

<p><input type="button" onClick="change()" value=" 変 換 "></p>

<p><textarea id="textB" rows="20" cols="70"></textarea></p>

</form>
</body>

お礼日時:2009/02/17 22:52

正規表現が苦手なら、文字列に対するメソッドで乗り切りませう。



1. 取得したテキストを改行でsplit
2. 1の配列でforループ
3. それぞれ1文字目が"#"かどうか判定していく
4. "#"だった行については部品1、2を挿入するようにする

この回答への補足

下記のものを作ってみたのですが、エラーが出てうまくいきません。
間違っている箇所がわかりません。
教えていただけないでしょうか?

<head>
<title>変換</title>
<script language="JavaScript"><!--

function change() {
array = new Array();
text = document.obj.textA.value;
LF = String.fromCharCode(10);
array = text.split(LF);
for (i = 0; i < array.length; i++) {
if (array[i].match(^#)) {
textB += "Sun" + array[i] + "Mon";
} else {
textB += array[i];
}
}
}


//--></script>



</head>
<body>
<form name="obj">
<textarea name="textA" rows="10" cols="70"></textarea><br><br>

<input type="button" onClick="change()" value=" 変 換 "><br><br>

<textarea name="textB" rows="10" cols="70"></textarea>
</form>
</body>

補足日時:2009/02/15 18:09
    • good
    • 0

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