- 締切済み
先頭 中央 末尾 スぺースチェック
ある文字列の先頭と末尾の全角スペースを削除し、文字列の途中での(全角または半角)スペースは1つだけ残る(複数入った場合)のチェックはどうしたら要いいでしょうか? ご教授願います。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- askaaska
- ベストアンサー率35% (1455/4149)
どうすればって もう書いたじゃない。 もう一回表現を変えて書いてあげるわね。 あなたが一番下で提示しているロジックの replace処理の後に もう一回replaceしてあげる必要があるの。 次のreplace文は 全角スペースが1つ以上あったら1つに置き換える という感じになるわね。
- askaaska
- ベストアンサー率35% (1455/4149)
何なの?そのif文? \sを入れているってことは全角スペース以外も対象になっているのね。 > やはりうまく行かなかったのはなぜ 具体的にどう上手くいかなかったのか書いてくれないと困るわ。 そもそも " あああ いいい ううう " が "あああ いいい ううう" でいいのかにも答えてくれてないから あなたの目標がまだわかっていないのよ。 まあこれが目標って思い込むけど。 if文の謎はおいておいて あなたのreplaceだと 両端のスペースは取り除けても 真ん中が処理できないのではなくて? 真ん中のを処理するにはもう一回replaceが必要だわ。 1回のreplaceではどうすることもできないから必ず2回必要なの。 次のreplace文は 全角スペースが1つ以上あったら1つに置き換える という感じになるわね。
補足
>" あああ いいい ううう " ↓↓ >"あああ いいい ううう" はっきり言わなかった、すみません。 askaaskaさんの言ったような結果になるには、どうすればよいでしょう?
2です。訂正です。こんなの? alert(' 文 字 列 1 '.replace(/^ +| +$/gm,'').split(/ | /gm).length+'ある');
alert(' 文 字 列 1 '.replace(/^ | $/gm,'').split(/ | /gm).length+'ある');
- askaaska
- ベストアンサー率35% (1455/4149)
" あああ いいい ううう " が "あああ いいい ううう" になるってことかしら。 replaceで正規表現を使えば2行でできるわよ。
お礼
ありがとうございました、 実は自分のはほうは以下のように書いてみましたが、やはりうまく行かなかったのはなぜ? もしよかったら、またご教授をお願いします。 <%@ page contentType="text/html; charset=Windows-31J" %> <HTML> <HEAD> <TITLE>テスト</TITLE> <SCRIPT type ="text/JavaScript"> function trim(str){ // 前後の全角・半角スペースを削除 if( str = str.replace(/^[\s ]+|[\s ]+$/g,"")){ // オブジェクトの中身を str にし、str を返す return str; } } //--> </SCRIPT> </HEAD> <BODY> <FORM NAME="testForm" METHOD="post" ACTION="/jsptest/test.jsp"> <TEXTAREA WRAP="hard" NAME="str"></TEXTAREA> <INPUT TYPE="button" VALUE="送信" ONCLICK="trim()"> </FORM> <% String str = request.getParameter("str"); %> あなたの送信した情報は【<%=str%>】です。 </BODY> </HTML>
お礼
何回も教えていただきまして、ありがとうございました。