• ベストアンサー

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

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

  • 全角スペースを削除するには?

    全角のスペースの削除の仕方を教えてください。 例を下に示します。 50桁の変数"name"の中身は"山田 太郎           "です。 変数の中身は、山田 太郎の後ろは全角のスペースが入っています。 名前の後ろの全角のスペースが半角4桁(全角2桁)以上ある場合は、 それ以降を削除したと思っています。 かなり困っています。良い方法をどなたかご伝授下さい。 宜しくお願いします。

  • エクセルでのスペース削除

    教えてください。。。 例)  山 田 太 郎→山田太郎と文字間のスペースを削除したいのです。TRIM関数だと前後のスペースしか削除されません。どうぞ宜しくお願いします。。。

  • 前後の全角スペースを削除すると文字化けする

    PHP初心者です。 trimファンクションを使って前後の全角スペースを削除したいのですが $test = " 左右に全角スペースがある文字列 "; echo trim ( $test , " " ); だと問題なく表示されるのですが以下のようにテキストボックスに入力した文字の 前後の全角スペースを削除しようとすると最初の1文字目が文字化けします。 ●test_input.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>前後の全角スペースを削除する</title> </head> <body> <form action="test.php" method="get"> <dl> <dt>文字を入力してください。</dt> <dd><input type="text" name="test" size="50" maxlength="50" id="test" /> </dd> </dl> <input type="submit" value="送信する" /> </form> </body> </html> ●test.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>前後の全角スペースを削除する</title> </head> <body> <p>入力文字</p> <?php $test = ($_REQUEST['test']); echo ($test); ?> <br /> <br /> <p>trim ( $test , " " )</p> <?php echo trim ( $test , " " ); ?> </body> </html> どこがいけないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • 全角スペースを取り除きたい

    こんにちは。 フォームのテキストボックスで全角スペースが入力され時、全角スペースを削除したいんです。 あいう△えお → あいうえお のように いろいろ調べてみたのですがわからないのでお願いします。

    • ベストアンサー
    • PHP
  • 末尾の全角スペースの削除

    SQL Server 2008環境です。 文字列の末尾の空白を一括して削除したくて、以下のようなクエリを書きました。 UPDATE TEST_TABLE SET NAME = REPLACE(RTRIM(REPLACE(StoreBranchName, ' ', ' ')), ' ', ' ') 全角スペースを一度半角スペースにして、RTRIMをかけた後、最後に 半角スペースを全角に直すというものです。 しかし、これだと、元々半角スペースが入っていた場合、そっちまで全角スペースに なってしまうため悩んでおります。 うまいやり方を教えていただけないでしょうか。 宜しくお願いします。

  • 半角スペース、全角スペースの削除がうまくいかない

    初心者ですが、あまり専門的な事はわかりません。 どなたか宜しくお願いします。 ヤフー電話帳でリストを作っています。 新しく作ったリストと、既にパソコンにあるリストが重複していないか、vlookup操作して重複分は削除していってます。 それが、重複してるのに引っかからなかったりするので、色々調べたらヤフー電話帳には会社名の後にスペースがありました。  このスペースを、置き換えで一気に消したいのですが消せるのと消せないのがあります。 仕方なく、置き換えで消せないのは一つ一つ手作業で消してますが、 かなりの数でまいってます。 どなたかアドバイスお願いします。

  • JacaScriptのスペース削除について

    JavaScriptのスペース削除についての質問です。以下のコードで、入力された値が空白又はAllブランクだった時の処理をしています。ここに、前後に全角半角スペースが入力された場合は、それを削除する、という処理を入れたいので、以下のようにしています。 /*(1)*/function trim(nameTXT) { return nameTXT.replace(/^[ \t\r\n]+|[ \t\r\n]+|[ \t\r\n]+|[ \t\r\n]+$/g, ""); } // 未入力またはスペース入力時のアラート及びフォーカス処理関数 function check() { var nameTXT = document.formMerchandise.name.value; if(trim(nameTXT).match(/ |\s+/)||trim(nameTXT)==""){ alert("商品名を入力してください"); document.formMerchandise.name.focus(); return false; } if(trim(nameTXT)>25){ alert("商品名は25文字までです"); document.formMerchandise.name.focus(); return false; } return true; } ネットを参考にしながらではあるのですが、(1)で自作メソッドを作成し、その中で「受け取った文字の前後にある全角半角スペースを削除して戻す」という処理を実装してみました。半角スペースに関しては期待通りの処理を行えたのですが、全角スペースに関しては削除されず、文字として認識されてしまっています。 例えば (半角スペース) " 商品名 "→"商品名" (全角スペース) " 商品名 "→" 商品名 " となってしまいます。半角スペースが削除されているので後少しとは思うのですが、どなたか教えて頂けないでしょうか?よろしくお願い致します。

  • マクロで半角・全角スペースと改行を削除したい

    マクロ初心者です。 BookA-sheetAの「F1:F40」に入っている文字列左右(前後)の半角・全角スペースと、 改行コードを削除したいのですが、書いてみたマクロはエラーが出てしまいます。 trim関数と、改行コード削除はどう組み合わせればよいのでしょうか? 初心者で申し訳ないのですが、ご教示いただければ幸いです。

  • 全角スペース

    全角スペースはコメントにも使用すべきではないのでしょうか。 コード上に入り込んだ場合はコンパイラーがエラーを出してくれると思いますが、これも完全では無いのでしょうか。 例)紛れ込む位置によっては判断しない。 その他、全角スペースの致命的な問題があれば、教えてください。 # 後輩を指導する上で、決定的な理由が言えず困っております。

  • 半角全角スペースの削除(先頭&末尾)

    やまとです。 ある文字列の先頭と末尾のスペースを取り除きたいのですが、 どのようにしたら良いでしょうか? 事前に試した事が2つあります。 1.trim を使用する。  $aiueo = " あいうえ お "; $aiueo = trim($aiueo));  とすると、スペースが削除されます。  しかし、これでは全角のスペースが削除されないようですね。 2.置換する。  $aiueo = " あいうえ お ";  $aiueo = str_replace( ' ', '', $aiueo );  とすると、全角のスペースが削除されます。  しかし、文字列の先頭と、末尾以外の全角スペースも削除されてしまう  ようですね。 では、文字列の先頭と末尾の半角スペースと全角スペースを削除したい場合は どのようにしたら良いでしょうか? ご教授願います。

    • ベストアンサー
    • PHP

専門家に質問してみよう