スクリプトガイド > プログラミング手法 > 文字列、行、またはシーケンスの相違点の特定
公開日: 04/01/2021

文字列、行、またはシーケンスの相違点の特定

Shortest Edit Script()関数は、2つの文字列、行またはシーケンスを比較し、異なる部分のリストまたは異なる部分を記述する行列を戻します。2つの列、リスト、または行列の違いを確認する場合にShortest Edit Script()を使用できます。この関数は、シーケンスAをシーケンスBに変更する最短の方法の一形態を戻します。複数の最短のスクリプトが存在する可能性があります。

シーケンスの例

t1 = New Table( "t1",
	New Column( "Column 1",
		Numeric,
		Continuous,
		Format( "Best", 12 ),
		Set Values( [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7] )
	)
);
 
t2 = New Table( "t2" ,
	New Column( "Column 1",
		Numeric,
		Continuous,
		Format( "Best", 12 ),
		Set Values( [2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 6] )
	)
);
EditScript = Shortest Edit Script( // テーブルごとに列1を比較
	sequences(
		N Rows( t1 ),
		N Rows( t2 ),
		Function( {a, b}, // 列に添え字を付ける
			t1:column 1[a] == t2:column 1[b] // データテーブルt1およびt2で
		)
	)
);

[-1 1 .1, //文字列aの位置1の1項目を削除

0 2 1 4// 文字列aの位置2、文字列bの位置1の4項目を保持

-1 6 .2, // 文字列aの位置6の2項目を削除

1 .5 4, // 文字列bの位置5の4項目を追加

0 8 9 5// 文字列aの位置8、文字列bの位置9の5項目を保持

-1 13 .1] // 文字列aの位置13の1項目を削除

行列の各列は次の内容を表します。

列1: 項目の削除(-1)、共通項目の保持(0)、項目の追加(1)

列2: 文字列a内の位置

列3: 文字列b内の位置

列4: 指示の対象となる項目の数

欠測値は、比較の結果その列の値が不用であることを示します。

区切り文字の例

次の例では、 "@"と "$"を区切り文字として扱います。

aa = "this is$a test of@shortest$edit script lines$with several words";
bb = "this is a$test of$shortest$edit script lines with several@words";
 

// "@"と "$"は区切り文字

Shortest Edit Script( lines( aa, bb, separators( "@$" ) ) );

{{"Remove", "this is$a test of@"}, {"Insert", "this is a$test of$"}, {"Common",

"shortest$"}, {"Remove", "edit script lines$with several words"}, {"Insert",

"edit script lines with several@words"}}

『スクリプト構文リファレンス』のShortest Edit Script( A, B )を参照してください。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).