• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JacaScriptのスペース削除について)

JavaScriptのスペース削除について

このQ&Aのポイント
  • JavaScriptでのスペース削除方法について質問です。
  • JavaScriptのコードで、入力された値の前後にある全角半角スペースを削除する方法を教えてください。
  • 全角スペースに関しては削除されず、文字として認識されてしまいます。どなたか解決方法を教えてください。

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

  • ベストアンサー
  • byDesign
  • ベストアンサー率75% (45/60)
回答No.2

元のtrim関数はすべての空白を削除していますが、削除するのが前後の空白でよければそれで良いです。 回答したものに変更してください。 (元の処理ではこうなっている:" a b c "→"abc") // 私なら以下のようにします。 function trim(nameTXT) {   return nameTXT.replace(/^[\s ]+|[\s ]+$/g, ""); } function check() {  var nameTXT = document.formMerchandise.name.value || "";  nameText = trim(nameText); // 前後の空白除去  if(nameTect === ""){   alert("商品名を入力してください");   document.formMerchandise.name.focus();   return false;  }  if(nameTXT.length > 25){   alert("商品名は25文字までです");   document.formMerchandise.name.focus();   return false;  }  document.formMerchandise.name.value = nameText; // 空白を除去したものを入れなおす  return true; } // 半角空白はつぶれるので、インデントは全角空白を使っています、コピペする場合はインデントの全角を半角に変えてください

その他の回答 (2)

  • think49
  • ベストアンサー率59% (285/482)
回答No.3

既に指摘がありますが、「完全な空白文字削除」は「先頭の空白文字削除」で満たせる為、「前後の空白文字削除」で要件を満たせます。 また、\s は ECMAScript 3 の頃から全角空白を含むため、ECMAScript 3 準拠のブラウザであれば string.replace(/^\s+|\s+$/g) で要件を満たせます。 しかしながら、JScriptエンジンを搭載する IE8- では \s === [\f\n\r\t\v] の為、この方法では実装できません。 https://msdn.microsoft.com/en-us/library/1400241x.aspx ECMAScript 5 で本要件を満たせる String.prototype.trim が実装されましたが、やはり、IE8- では実装されていません。 http://kangax.github.io/compat-table/es5/ 結論をいえば、「String.prototype.trim の Polyfill を書く」もしくは「String.prototype.trimがあればそれを使い、なければ独自関数を使う」ように書けばよいと思います。 影響範囲が少ない後者で書くなら下記のように。 --- var trim = (function (String) {  if (typeof String.prototype.trim === 'function') {   return function trim (string) { return String(string).trim(); };  }  return function trim (S) {   var S = String(S),   // 以降、https://gist.github.com/think49/630648 の "this.trim = function () {" の行を参照   return S.replace(new RegExp('^' + whitespaces + '|' + whitespaces + '$', 'g'), '');  }; })(String); --- 参考 http://togetter.com/li/43953 http://okwave.jp/qa/q6085442.html https://gist.github.com/think49/630648 # Re: chelsea00さん

  • byDesign
  • ベストアンサー率75% (45/60)
回答No.1

前後の全角半角スペースを削除したいと言う事でしょうか? それであれば、以下でどうでしょうか? nameTXT = nameTXT.replace(/^[\s ]+|[\s ]+$/g, "");

chelsea00
質問者

補足

回答誠にありがとう御座います。JavaScriptはまだ慣れていなくて、というのは言い訳にもなりませんが、ここで定めているnameTXTというのが、jspのテキストボックスに値、ここで言う商品名を入力するという事になるのです。なので、 /*(1)*/function trim(nameTXT) { return nameTXT.replace(/^[ \t\r\n]+|[ \t\r\n]+|[ \t\r\n]+|[ \t\r\n]+$/g, ""); } の部分を、回答して頂いた /*(1)*/function trim(nameTXT) { return /*回答して下さった部分*/nameTXT.replace(/^[\s ]+|[\s ]+$/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; } に繋げる、という考え方で宜しいのでしょうか?勉強不足で申し訳ありません。