• 締切済み

変換テーブルを使った、文字列置換[JavaScript]

以下のような、変換テーブルがあるとします。 var ascii = [' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '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 htmlChar = [' ', '!', '"', '#', '$', '%', '&', ''', '(', ')', '*', '+', ',', '-', '.', '/', '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', '{', '|', '}', '~']; ブラウザの「ソースを見る」で、ソースを見るとHTMLのフォームのテキスト入力フィールドのvalueに特殊文字コード「'」と表示されているとします。 例;ブラウザの「ソースを見る」で、ソースを見た場合: <input type="text" value="'" /> これを変換テーブルを使って、ブラウザの「ソースを見る」で、ソースを見たときに、特殊文字(' なら '(シングルクォート)に表示させたいのですが、可能でしょうか? 変更後の例;ブラウザの「ソースを見る」で、ソースを見た場合: <input type="text" value="'" />

みんなの回答

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.2

ブラウザのアドレスバーに javascript:document.body.innerHTML=document.getElementsByTagName('html')[0].innerHTML.replace(/</g,'&lt;').replace(/\n/g,'<br>').replace( /&#(\d+);/g, function(a,n){ return String.fromCharCode(n); } ); をコピペしてエンター。

回答No.1

> 変更後の例;ブラウザの「ソースを見る」で、ソースを見た場合: ソースを書き換えることは出来ません。

関連するQ&A

  • JavaScriptの文字のエンコードについて

    フォームの入力欄で、「'」(シングルクォート)を入力してサブミットすると、ブラウザ(Firefox3.5)で見ると「'」と表示されていますが、ブラウザのソースを見るとvalueの¥ところには、「'」と表示されています。 これは、PHPでエンコードされているせいなのですが、 PHPでエンコードされた「'」を、JavaScriptを使って、ブラウザからソースを見たときに「'」と表示できるでしょうか? ソースは、こんな感じで書いたのですが、動作しませんでした........。 function chChar(){ var keyValue = document.getElementById("delete_key").value; var ascii = new Array(' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '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 htmlChar = new Array(' ', '!', '"', '#', '$', '%', '&', ''', '(', ')', '*', '+', ',', '-', '.', '/', '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 re = new RegExp(htmlChar); if(keyValue.match(re)){ for(i=0; i<ascii.length; i++){ keyValue = keyValue.replace(htmlChar[i], ascii[i]); } } return keyValue; }

  • JavaScriptの配列について

    var old_array = Array('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', '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', '<', '#', '/', '>', '%', '.', '*', '0', '!', '?', ':', '=', '|'); var new_array = Array('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', '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', '<', '#', '/', '>', '%', '.', '*', '0', '!', '?', ':', '=', '|'); のような配列があり、 abcと入力するとbcd DEFと入力するとEFG 012と入力すると!23 というようなものを作りたいのですがどうすればいいでしょうか。

  • 多次元配列の初期化

    多次元配列の初期化を行いたいのですが、 下記の方法では、配列の値が多くなったときに大変 なので他に良い方法はありませんでしょうか? char lesson[7][6] = { {'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'}, };

  • 順列・数え上げ

    よろしくお願いします。 ここに下のような390個の文字があります。 (A,B,C,D,E,F,G,H,I,J,K,L,M がそれぞれ10個ずつ、 N,O,P,Q,R,S,T,U,V,W,X,Y,Z がそれぞれ20個ずつあります。) この390個の文字から235文字を選んで一列に並べる方法は全部で何通りありますか。 A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M 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 N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z N O P Q R S T U V W X Y Z 以下、私が考えたことを書きます。 この390個の文字から235個の文字を選ぶ組み合わせの総数は、 (Σ[k=0~10]x^k)^13*(Σ[k=0~20]x^k)^13 を展開したときのx^235の係数ですから、 23463540513956137996043929988 通りだということは分かります。 この23463540513956137996043929988 通りのそれぞれについて235個の文字 の順列(同種のものを含む順列)を数え上げれば答えは出ると思いますが、これは あまりにも大変な作業です。 何かよい知恵はないでしょうか。

  • [C#]2つのランダム文字列を作りたい

    いつもありがとうございます。 2種類のランダム文字列を作りたいのですが、 なぜか同じ文字列が作成されるという現象が起こります。 以下の関数を用意して public static string ランダム(int 桁数) { string[] codelist = new string[] { "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" }; Random Random = new System.Random(); for (int i = 0; i < 桁数; i++) { randomcode += codelist[Random.Next(0, 36)]; } return randomcode; } textBox1.Text = ランダム(10); textBox2.Text = ランダム(10); とやっても、同じランダムの文字列が入ってしまいます。 間に、 Thread.Sleep(100); とか入れると変わるのですが・・・ 理由がわかりません。 初心者的質問ですみませんがよろしくお願いします。

  • OCRで文字変換したいのですが。

    Brother 複合機 DCP-595CN 使用。スキャン項目の三段目 OCR:テキストデータ変換で 本の文字を読み取り wordに写しその文字を自由にフォントやサイズを変えたい。  PCは MacBook Air バージョンは Yosemite 10.11 から Hi Sierraの 10.13.8 に変えました。 以下はできてこんなところです! c c r y O w r n e a n a s h a r k k n o w s y o w % ' l t @ e ' b o y r & s @ e d , h a r d l y a b t e t o c r e d i t h i s h e a r i n g , T h e w o m a n n o d d e d , n o t l o o k i n g a t a n g r t h i n g b u t h e r s k i r t . P a u l o ' s b r e a t h e x p l o d e d " B u t t h a t ' s i m p o s s i b l e ! " T h e w o m a n p a u s e d t o r a i s e b l a c k e y e s i . n u r o n d e r , c ' Y o u h a v e n e v e r h e a r d o f m e @ " s h e a s k e d . P a u l o w a s a t a l o s s t o a c c o u n t f o r t h e w o m a n ' s c a s u a l a c c e p t a n c e o f t h e s h a r k ' s p r e s e n c e A l l k n e w s 3 h a r k s w e r e a m e n a c e ! Y e t t h i s o d d o   ※OKWAVEより補足:「ブラザー製品」についての質問です。

  • 【Ruby】n=2;eval$s=%q{Z=?\s

    【Ruby】n=2;eval$s=%q{Z=?\s;eval"$><<S=Z*4"+(%w{+"n=#{-~n%3};eval$s=%q{#$s}#YE";$>.isat ty&& (r="\e[43;3#{C="#{n*5%9+1}m"}#{T}\e[4"+C+S[1568,79]+E="\e[0m";r[81,21]="\e[37m# {(["Ca f\u00e9_au_lait","Yogurt","Fruit_mix"][n].chars*Z).tr(?_,"").center(21)}\e[3"+C ;a=%~POS A[`ER]`PASX1cTc22V6NNP.QOYGMXXIG7KK:bCCaVN8WZ[]UQMMS`cBFFJJHHY`QTUIUURRPTOcRV_a LLUT`WXL W]a_c_bV`XXYa_9}+[T=' B A L A N C E D F O O D ']*0+%w{bZZYb_][9cc ????`9^acG G,,N9DU`DKcUKU3K4!4!4!QXTSSS""9`9`#U`KcK--S;;/GOT<QE$U=>F==Q0@%U/P/B=S0Q`PM&XVV V15CMRHMSH RKO>==QMQVR 'b`&DK>BS<XE$T>T33DDDUM<V@@E(((TCT0A<0A"')5CXPcQa54X@@Y#KcK--S;; /GOT<Q`$)T)T :a4A%%#X VS6a ' b`&DK>BS<T7**] ^^b6+++]~; P=Str uct.new(:x,:d,:p,:v );M=(-5**7.. b=0).m ap{[]};A=s =[];t=Time.now;q=?y.succ;( s=S .scan(/.+/ );M[0]<<P [25i-b%3*5i- 9,0,0 ,2+1 i] ;6 0.t ime s { |i |j= i %2 0 ;i< 40 ? [ M[j -1],m=M[j],M [j+1 ]]. ea ch {| n| m. ea ch {| p| n. ea ch {| q| d=p .x -q .x ;w=d.abs-4;w <0& &( i<2 0? p. d+= w *w: p. p+= w *( d *(3 -p. d- q.d) +(p.v-q.v)*4 )/p .d )} } } :M . shif t .ea c h{ |p| y, x= ( p. x+= p.v +=p.p/10).re ct; p.p = [4 3- b/9 .0-y,1 ]. m in- [x,p .d=0 , x -9 2].s ort[1]*2i;p. v/=[ 1,p.v.a bs/2].max;M[20-j+[0 ,(x+ 4).div(5 ),19].sort[1]]<<p;35.tim es{|w|v=x.to _i-3+w %7;c=s[w=y.div(2)-2+ w/7];(x-v)**2+(y-w*2)**2<16&&0<=w&&c &&(k=(w*2-21 )**2/99)<=v&&c[v]&&k+79!=v&&c[v]=q}}};(24-b/18..21).map{|k|s[k]=Z*(k=(k*2-21)** 2/99)+q*79 +Z+q*2*(6-k)};s*="\e[B\r";" Your favorite flavor ";b+=1;A<<"\e[A\r"*21+s.gsub (/\172+/){ "\e[43m"+$&.tr(q,Z)+E})while+s.count(q)<1950;A.map{|q|sleep([t-Time.now+3,2e-2] .max);$> <<s=q};$><<s.gsub(?m,";33m").gsub(Z){S.slice!(/./)};b=?]*33.upto(91){|i|a=~/../ ;a=$'.gs ub(i.chr,$&)}*2;Z<<8;(b+a.gsub(?^,"^]"*41)+b).bytes{|c|c-=86;c<8?sleep(3e-2):$> <<(c<( 'CalorieMate-Liquid-Quine';9)?r.slice!(/\e.*?m|./):c>9?"\e[%X"%c:Z)});puts})*"" }#YE 質問 これを実行すると結果は何と表示されますか? オンラインエディタ上で実行しても何も結果がコンソール画面に表示されませんでした。 これはルビーコードではないのですか?どういう意味が含まれているソースコードですか?

    • ベストアンサー
    • Ruby
  • エクセルでどうしてもVALUEになります。

    宜しくお願いします。 ちょっと長いですが N18  に =IF(AND(OR(D18="",D18=0),E18="",H18="",J18=""),"",D18+E18-F18-H18-J18-K18-M18) X18 に =IF(AND(OR(N18="",N18=0),O18="",R18="",T18=""),"",N18+O18-P18-R18-T18-U18-W18) Y18 に 数値 25,000を入れると AH18 の =IF(AND(OR(X18="",X18=0),Y18="",AB18="",AD18=""),"",X18+Y18-Z18-AB18-AD18-AE18-AG18) がVALUEになります。 どうしたら、数式の意味を変えずにエラー回避できるのでしょうか?

  • ファイルの入出力を行って文字を変換する

    入力するファイルにa~zを記入しておき、 出力するファイルにaなら1、bなら2、zなら26に変換させたいのですがどうしたらよいでしょうか? #include <stdio.h> #include <string.h> #define DELIMITER "/ ," /* 区切り文字 */ int main(void) { FILE *fin,*fout; int count=0; int i; char s[256], s2[256]; char alpha[]={'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'}; int kazu[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26}; char *taken; char *strch[50]; if( (fin=fopen("file1.txt","r"))==NULL) { printf("入力ファイルがオープンできません\n"); exit(EXIT_FAILURE); } if( (fout=fopen("file2.txt","w"))==NULL) { printf("出力ファイルがオープンできません\n"); exit(EXIT_FAILURE); } while(fgets(s,256,fin)!=NULL) { while (token != NULL) { strch[count]=token; token = strtok(NULL, DELIMITER); count++; } memset(s2, NULL, sizeof(s2)); fprintf(fout,"%d\n",s2); } fclose(fin); fclose(fout); return 0; }

  • ちょっとした問題作ってみました♪暇つぶしに考えてみてください。

    とある学校のとあるクラスの今朝のことです。 A君からZ君までそれぞれの証言をもとに,教室に早く来た順番を答えてください。なお,これは朝の会(?)の出席確認が行われるまでの時間です。 A:Rの方が早かったですよ。 B:僕の次にGが来ました。 C:Oと一緒に来ました。 D:順番なんてどうでもいいじゃん。 E:Gの次に来ました。 F:Zより早く来ました。 G:13番目か14番目か・・・そのくらいに来ましたでしたね。 H:Lの次の次に来ましたね。 I:Nがトップ3なら僕はワースト3ですね(笑 J:Rよりは早かったです。 K:けっこう早く来たほうですかね。 L:Hの前の前に来ましたね。 M:最後の方でしたね。ほとんどみんな来てました。 N:一番乗りだと思ったけど誰かいましたね。 O:トップ3に入りました。 P:遅刻したかと思ったけどギリギリ間に合いました。 Q:僕が来たときにはすでに4人いました。 R:上から7番目か下から7番目です。 S:朝寝坊しちゃいました。 T:Zなら僕が来た時にはすでにいましたので,確か10番目以内ですよ。 U:数式で表すなら“Z<僕<T”といったところでしょうか(笑 V:Kの次に来ました。 W:僕の後にIが来ました。 X:来たら誰もいませんでした。 Y:LとHにはさまれちゃいましたね。 Z:あぁ~よく分からん。 DとZについては証言無しということで解釈してください。 Uの証言の“Z<僕<T”というのはZ→U→Tの順で来たという意味です。 では解いてみてください。

専門家に質問してみよう