2017-10-24 1 views
1

중복으로 표시 될 수 있지만 아직 프로퍼 솔루션을 찾지 못했습니다.단어 및 디스플레이 변경에 의한 단어 비교 비교 단어

두 단어를 한 단어 씩 비교하여 추가/삭제/변경된 단어를 보여주는 텍스트를 인쇄하는 기능을 작성해야합니다. 예를 들면 :

StringOriginal = "나는 팀이고 나는 27 살"

StringEdited = "나는 김과 나는이 오래된 아니다".

결과 : 나는 김과 나는 27 년입니다.

대부분의 diff 알고리즘은 char을 char과 비교하는 경향이 있습니다. 당신이 동일한 색인에 2 개의 서로 다른 단어를 가질 때까지 상호 문자로이 작업은 훌륭합니다.

는 "나는 팀입니다" 결과로 "나는 김입니다" 에 편집 :

나는 오전 T

대신

입니다 팀 김.

모든 포인터?

답변

0

StringOriginal 및 StringEdited 공간으로 분할합니다. StringOriginal의 각 단어를 반복하여이를 편집 된 단어 색인과 비교합니다. 모든 불평등 한 단어는 임시 변수에 넣고 루프에서 다시 같은 단어를 얻을 때만 결과에 연결해야합니다. 결과를 만들 때 StringBuilder를 사용하십시오. 희망이 다시 문자열이 같은 연합을 통해 결과 배열에 가입 공백으로

+0

감사합니다, 제가 시작되었다! –

0

분할에게 두 문자열을하는 데 도움이 :

string[] arr1 = str1.Split(' '); 
string[] arr2 = str1.Split(' '); 

var merged = arr1.Union(arr2).ToArray<string>(); 

var mergedString = string.Join(' ', merged); 
+0

이것은 작동하지 않았습니다. –

0

조금 오래된 패션을, 그러나 당신은 이것을 시도 할 수 있습니다.

string StringOriginal = "I am Tim and I am 27 years old"; 
    string StringEdited = "I am Kim and I am not that old"; 

    string[] StringOriginalArray = StringOriginal.Split(); 
    string[] StringEditedArray = StringEdited.Split(); 
    string[] newStringArray = new string[StringOriginalArray.Length + StringEditedArray.Length]; 

    int i = 0; 
    int io = 0; 
    int ie = 0; 

    while (i < newStringArray.Length) 
    { 
     if (io < StringOriginalArray.Length) 
     { 
      newStringArray[i] = StringOriginalArray[io]; 
      io++; 
      i++; 
     } 
     if (ie < StringEditedArray.Length) 
     { 
      newStringArray[i] = StringEditedArray[ie]; 
      ie++; 
      i++; 
     } 
    } 

    string[] finalArray = new string[newStringArray.Length]; 
    int f = 0; 
    for (int k = 0; k < newStringArray.Length; k=k+2) 
    { 
     finalArray[f++] = newStringArray[k]; 
     if (newStringArray[k] != newStringArray[k+1]) 
     { 
      finalArray[f++] = newStringArray[k+1]; 
     } 
    } 

    Console.WriteLine(String.Join(" ", finalArray)); 

출력 :

"I am Tim Kim and I am 27 not years that old" 
+0

이 작품! 난 그냥 asp.net 응용 프로그램에서 녹색/빨간색으로 추가/삭제 단어를 강조 편집해야합니다! 감사! –

+0

여러분을 환영합니다! –

관련 문제