• ベストアンサー

前後の全角スペースを削除するには

JavaScriptで、前後のスペースを削除したいのですが、どのようにやればいいかわからないので、教えてください。 例:「 あいう 」⇒「あいう」

質問者が選んだベストアンサー

  • ベストアンサー
noname#45976
noname#45976
回答No.6

>呼び出し元 >trim(" あいう "); >function trim(s) { >return s.replace(/^[  ]+/,"").replace(/[  ]+$/,""); >} >というかんじです。 こちらの環境で同じ処理で結果をアラート表示にしてみましたが、ちゃんとスペース削除出来ています。 どうやら処理内容以外に問題がありそうですね。 もし関数呼び出しの時の引数がフォームからとかだとしたら、まずどこかに書き出すなどして、改行コードなどが含まれていないか調べてみてはどうでしょう。 他に文字コードの問題もあるかもしれませんが、今のソースだけの情報では、ちょっと私のほうではわかりかねます。。。(^^; 頑張ってください。(><b

mikmik_a
質問者

補足

問題があるとすれば、 このJavaScriptのコードをxmlファイル内に書いてあるのですが、それが影響している可能性はありますか?

すると、全ての回答が全文表示されます。

その他の回答 (6)

noname#45976
noname#45976
回答No.7

>問題があるとすれば、 >このJavaScriptのコードをxmlファイル内に書いてあるのですが、それが影響している可能性はありますか? うーん、すみませんがXMLのほうは勉強不足であまりわからないので絶対とは言えませんが、おそらく関係がないかと。。。 作業中の環境情報と全体的なソースを書き込んで、わかる方の回答を待ったほうがいいかもしれません。

mikmik_a
質問者

お礼

確かに、html上だと、正常に動きますね。 なぜか、xmlに移行すると動かないですね。。。 いろいろ、親切に教えていただき、ありがとうございました。

すると、全ての回答が全文表示されます。
noname#45976
noname#45976
回答No.5

function mb_trim(str) { trim_str = str.replace(/^[  ]+/,"").replace(/[  ]+$/,""); return trim_str; } aaa = "|"; bbb = mb_trim(" あいう "); ccc = aaa+bbb+aaa; alert(ccc); で試したら普通にスペースが取れました。(アラートで|あいう|という表示になります) おかしい点はないと思われますが、、、 全体のソースを見せていただけますか?

mikmik_a
質問者

補足

呼び出し元 trim(" あいう "); function trim(s) { return s.replace(/^[  ]+/,"").replace(/[  ]+$/,""); } というかんじです。

すると、全ての回答が全文表示されます。
noname#45976
noname#45976
回答No.4

以下で出来ます。(^^ str = " あいう "; //先頭のスペースを削除 str = str.replace(/^[△▲]+/,""); //最後のスペースを削除 str = str.replace(/[△▲]+$/,""); △が半角スペース、▲が全角スペースです。 \sとかの表記ではなく、スペースそのものを入れてしまって大丈夫ですよ。

mikmik_a
質問者

補足

ご回答ありがとうございます。 s.replace(/^[  ]+/,"").replace(/[  ]+$/,""); で、試して見ましたが、全角がトリムされませんでした。どこかおかしいところはありますか?

すると、全ての回答が全文表示されます。
noname#227796
noname#227796
回答No.3

昨晩、書き込もうと思ったらメンテナンスに入ってしまいました。(^_^; ↓こんな感じで良いのじゃないでしょうか? <script language='javascript'> <!-- str = ' あいう '; while ( str.indexOf(' ') == 0 ) { str = str.substring(1,str.length); } while ( str.lastIndexOf(' ') == str.length-1 ) { str = str.substring(0,str.length-1); } // --> </script> まあ、もっと上手いやり方もあるとは思いますが。 #正規表現でもできるかも

すると、全ての回答が全文表示されます。
  • ducati
  • ベストアンサー率29% (308/1062)
回答No.2

#1です。 ごめんなさい。Scriptでしたね。 Javaで書いちゃいました。 try~catchの部分を省いてください。 考え方としては同じでいけるはずです。

mikmik_a
質問者

補足

ご回答ありがとうございます。 できれば、JavaScriptのコードも教えていただけないでしょうか? 半角スペースだと、 str.replace( /^\s*/, "" ).replace( /\s*$/, "" ); で、うまくいくんですが、全角スペースの場合がわかりません。

すると、全ての回答が全文表示されます。
  • ducati
  • ベストアンサー率29% (308/1062)
回答No.1

文字のLengthとって回し、検索して全角スペースあったら""(空文字)にしてあげればよいのでは? ちゃちゃっと書いたので、これで動くかは保証しませんが、考え方として参考にしてください。 private String ZH(String s){ //除去対象文字 String d = " "; //変更文字 String af = ""; try{ s = new String(s.getBytes("SJIS"), "MS932"); } catch(Exception e){ } String r = ""; int len = s.length(); for (int i = 1; i < len+1; ++i) { String st = s.substring(i-1,i); int p = d.indexOf(st,0); if(p != -1){ st = af;} r = r + st; } return r; }

すると、全ての回答が全文表示されます。

関連するQ&A