二つの文字列を比較して違う箇所を発見したとき
何らかの処理を行うようなプログラムを書きたいのですが、
私の想像力が貧困な為そのアルゴリズムを考え付く事ができません
どなたか知恵を貸していただけないでしょうか?

具体的には以下のようなことをやっています。
私は現在,変数で
var exStr1="||||||||||+|1|2|3|4|5|6|7|8|9|+||||||||||";
var exStr2="||2||||||||+|1||3|4|5|6|7|8|9|+||||||||||";
と宣言しているとき私は
exStr1とexStr2では文字列の何処が違うか知る処理を知りたいのです。

とりあえず今私は変数X1とX2に

X1 = exStr1.split("+");
X2 = exStr2.split("+");

として「+」を区切り文字にして配列に入れてみて
更にソレを「|」で区切りなおしてみてます。

for(i=0;i<10;i++){
  Y1 = X1[i].split("|");
  Y2 = X2[i].split("|");
}

そこで違う場所を探すための処理として私は以下のように書いて見ました。
しかし現在全然動いてくれません。

for(i=0;i<10;i++){
  if(X1[i] != X2[i]){
    for(j=0;j<4;j++){
      if(Y2[j] != Y1[j] && Y2[i]==""){
        //ここで何らかの処理をしたい。しかし今はif文の条件がおかしいのか、この行の処理に入らない。
      }
    }
  }
}

う~。なんか質問の域を越えてるとも思いますし、
それに我ながら質問の意味がわかりづらいとは思うのですが
お願いします。なんらかのヒントのようなものでも頂けたら幸いです。

このQ&Aに関連する最新のQ&A

配列 文字」に関するQ&A: 文字配列について

A 回答 (1件)

================


var exStr1 = "||||||||||+|1|2|3|4|5|6|7|8|9|+||||||||||";
var exStr2 = "||2||||||||+|1||3|4|5|6|7|8|9|+||||||||||";
var result = new Array();

for (X = 0;X < exStr1.length;X++){
if (exStr1.charAt(X) != exStr2.charAt(X)){ result[result.length] = X; }
}
================
 上記スクリプトにより、配列resultに何文字目が違うかが入ります。
ピンぼけでないことを祈りつつ、参考までに。
    • good
    • 0
この回答へのお礼

ありがとうございました。

私自身もっとよくまとめて問題を抽出してから書くべきだと思いながら書いてしまった事が一番問題でした。
大変申し訳ありません。

Ap3さんのサンプルは大変ためになりました。
ありがとうございました。

お礼日時:2001/06/06 15:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qjavascript:(function(q, a, z) { q[a]("f")[z] = Ma

javascript:(function(q, a, z) { q[a]("f")[z] = Math.floor(Math.random()*999999);document.forms[0].submit(); })(document, "getElementById" ,"value");

このブックマークレットをsetIntervalで動かしたいのですがどう書き換えればいいのかよくわかりません。

調べたらstartfncやsetInterval(ここに何かを指定?,ミリ秒);を付ければ可能なことがわかったのですがうまくいきません。
初心者です。何卒宜しくお願いします

Aベストアンサー

こんにちは

>setIntervalで動かしたいのですが~~
setIntervalは以下のような構文になります。
 intervalID = window.setInterval(func, delay);
https://developer.mozilla.org/ja/docs/Web/API/Window/setInterval

ご提示のスクリプトは即時関数の形式をとっていますので、さらに関数化(匿名関数でも可)して上記構文のfuncに当てはめれば良いことになります。
http://qiita.com/katsukii/items/cfe9fd968ba0db603b1e
スクリプトは概ね以下の2行と等価ですので、こちらを関数化しても同じですね。
(フォームに乱数を設定しサブミットする)
 document.getElementById("f")..value = Math.floor(Math.random()*999999);
 document.forms[0].submit();


ところで、ご提示のスクリプトではフォームをサブミットするようになっていますが、通常はサブミットするとページが遷移してしまうので、setIntervalで繰り返すことは難しいはずです。
まぁ、target属性が設定されていたりすれば別ですけれど・・・
使い方がいまいちよくわかりませんが、文法的には
 setInterval( function(){
  ~~~
}, dalay);
とするか、
 setInterval(hoge, dalay);
 function hoge(){
  ~~~
 }
のようにすることで、実行が可能なはずです。(繰り返しできる環境であれば・・・)

こんにちは

>setIntervalで動かしたいのですが~~
setIntervalは以下のような構文になります。
 intervalID = window.setInterval(func, delay);
https://developer.mozilla.org/ja/docs/Web/API/Window/setInterval

ご提示のスクリプトは即時関数の形式をとっていますので、さらに関数化(匿名関数でも可)して上記構文のfuncに当てはめれば良いことになります。
http://qiita.com/katsukii/items/cfe9fd968ba0db603b1e
スクリプトは概ね以下の2行と等価ですので、こちらを関数化しても同じですね。
(フォ...続きを読む

Q&= ~0x0c; &= ~0x03; |=1;

JavaScriptで分からないコードがあるので教えてください。


■変数設定
var hoge = 0;


■変数格納
・キーを押した時の条件分岐
  ~なら hoge |= 1;
  または hoge |= 2;
  または hoge |= 3;
  または hoge |= 8;

・キーを離した時の条件分岐
  ~なら hoge &= ~0x0c;
  または hoge &= ~0x03;


■変数使用
・swithch文の条件分岐に利用
  (hoge&0x03)
  (hoge&0x0c)


■質問
・どういう意味でしょうか?
・文字コード?
・ビット演算?

Aベストアンサー

ビット演算してるわね

x = x + a

x += a
って書くことができるの

つまり
hoge |= 1

hoge = hoge | 1
のことね

~はNOTのこと

0x
はアスキーコードの16進数表記ねきっと

0x0c は改ページを意味していて
0x03 は文章の最後を意味している
と思われるわ
全文がないので推測だけど

Q変数?配列?の値の代入[ ]と{}?

こんにちは,よろしくお願いします。
JavaScriptで次のような変数の代入と思われる式の意味を教えてください。

 var testValue = {};
 var hsValue = [];

いろいろ探してみましたがはっきりしたことがわかりません。すみませんがよろしくお願いします。

Aベストアンサー

>代入を表すということでよろしいのでしょうか?

文法上そうなんですがどちらかというと宣言文だと考えれば
いいんじゃないですか?

>var testValue = {};
var testValue = new Object();

>var hsValue = [];
var hsValue = new Array();

QJavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?

JavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?


YOUTUBE日本語版
http://jp.youtube.com/
のHTMLソースを見ていたら、



<script type="text/javascript">
    window.google={kHL:"ja"};
</script>


という記述を目にしたのですがこれはどういう意味あいというか目的のものなのでしょうか?


教えていただければ幸いです。

Aベストアンサー

これは、window.googleに'kHL'というキー(値は'ja')を持つ連想配列を
作成しています。

JavaScriptでの連想配列は

var 変数名 = {
キー : '値',
キー : '値',
:,
キー : '値'
};

というような感じで作成します。
キーはダブルクォートまたはシングルクォートで囲まなくても
いいようです。

参考URL:http://javascriptist.net/docs/basic_hash.html,http://www.openspc2.org/JavaScript/kouza2007/array/hash/index.html

Q[[prototype]] =__proto__?

[[prototype]] と __proto__ は、同じ意味でしょうか?

Aベストアンサー

__proto__は非標準で実装依存なので、その点で同じではありません。

例えば、Firefoxの場合、下記ページに
__proto__ - JavaScript | MDN
https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/Object/proto
> An Object's __proto__ property references the same object as its internal [[Prototype]]
とあるので、Firefoxに関しては同じと見なせると思います。

もっとも、__proto__を実装しているブラウザはたいてい[[Prototype]]を意図して実装していると思われますし
現実的には同じものだと考えてしまっても理解する上で特に問題は無いかと思います。


人気Q&Aランキング

おすすめ情報