アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

具体的には以下のようなことをやっています。
私は現在,変数で
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文の条件がおかしいのか、この行の処理に入らない。
      }
    }
  }
}

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

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で質問しましょう!