• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javascriptで記号の半角→全角変換)

JavaScriptで記号の半角→全角変換について

このQ&Aのポイント
  • JavaScriptを使用して、記号の半角→全角変換を行おうとしていますが、エラーが発生しています。エスケープなどの試みも行いましたが、うまくいきません。
  • 半角の英数記号を全角に変換する方法をJavaScriptで実装しようとしています。しかし、カッコなどの記号に関してエラーが発生しており、解決策を探しています。
  • JavaScriptで記号の半角→全角変換を試みていますが、カッコなどの特定の記号に関してエラーが発生しています。エスケープなどの方法も試しましたが、解決できません。どなたかアドバイスをいただけないでしょうか?

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

  • ベストアンサー
  • deadend
  • ベストアンサー率62% (23/37)
回答No.2

RegExp()を使って"("、")"等をエスケープする場合には、"\\("、"\\)"のように"\\"を2つ使ってください。 また、han、zenに文字列を設定せずに、charCodeAt()、fromCharCode()を使う変換の方法もあります。 var target = '0123()' var result = '' for (var i = 0; i<target.length; i++) {   if ((0x0021 <= target.charCodeAt(i)) && (target.charCodeAt(i) <= 0x007e))     result += String.fromCharCode(0xff01 + (target.charCodeAt(i) - 0x0021));   else     result += target.charAt(i); }

gogoyamada
質問者

お礼

¥¥でエスケープするのですね。。勉強になりました。 教えていただきましたコードも問題なく動きました。PHPでは関数1つですがJSはこのようにやるんだなと勉強になりました。利用させていただきます。ありがとうございます!

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

その他の回答 (2)

回答No.3

#1です。 あのあと、いろいろありまして、そのさんぶつです。 へんかんひょうを2つ、つくります。こうごへんかんができます。 var hankaku = [  ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/',  '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?',  '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',  'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[','\\', ']', '^', '_',  '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',  'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~' ]; var zenkaku = [  ' ','!','”','#','$','%','&','’','(',')','*','+',',','-','.','/',  '0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?',  '@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',  'P','Q','R','S','T','U','V','W','X','Y','Z','[','¥',']','^','_',  '‘','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',  'p','q','r','s','t','u','v','w','x','y','z','{','|','}','~' ]; function translate (string, ary1, ary2) {  var result = [];  var len = string.length;  var ary0 = string.split ('');  var i;  var idx;  for (i = 0; i < len; i++) {   idx = ary1.indexOf (ary0[i]);   result[i] = (idx < 0) ? ary0[i]: ary2[idx];  }  return result.join (''); } alert (translate ('123 ( )', hankaku, zenkaku));

gogoyamada
質問者

お礼

重ねてありがとうございます! 変換表があるので何が何になるか分かり易くていいなと思いました。問題なく変換できました。 こういったやり方もあるのだと勉強になりました!

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

var toZenkaku =  (function (rep) {   return function () {    return this.replace(/"/g,'”')          .replace(/'/g,"’")          .replace(/\\/g,'¥')          .replace(/[ -~]/g, rep); }; })  (function (c) {   return String.fromCharCode (c.charCodeAt (0) + 65248)}) String.prototype.toZenkaku = toZenkaku; document.write ('0123( )'.toZenkaku ()); だめだなこれ。

gogoyamada
質問者

お礼

ご回答ありがとうございます! 変換されましたが、何かスペースがFF00という文字コードになってしまいました。でもそのあたりは改造することで対応できそうです。ありがとうございます。

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

関連するQ&A