2015-08-05 7 views
-1

Я хочу сравнить два предложения в JavaScript и вернуть несоответствия, если они есть. В противном случае я хочу вернуть true, когда предложения равны. Я искал в Интернете, и лучшая функция, которую я нашел, - http://ejohn.org/files/jsdiff.js.Как сравнить строку, возвращаемую функцией, другой переменной String в Javascript

Эта функция принимает два предложения и показывает различия, если они есть, в противном случае оно возвращает предложение.

Я сравнил другую строку в возвращенном string например:

var string=" Hello"; 
diffString("Hello","Hello")==string; 

Хотя приведенное выше утверждение следует вернуть true, он возвращает false. Должно быть место перед «Hello» в переменной string.

Я попытался

var string=" Hello"; 
      console.log(diffString("Hello","Hello").valueOf()==string.valueOf()); 

то же самое с:

  var string=" Hello"; 
      console.log(diffString("Hello","Hello")==string); 

возвращает false, когда он должен вернуться true поскольку diffString("Hello","Hello") вернется "Hello" и string="Hello"

Как сравнить строка, возвращаемая функцией diffString переменной?

+0

Что должно «diffString» вернуть? Я не понял эту часть. –

+0

Ваша переменная 'string' имеет значение, которое начинается с пробела. Вы ожидаете, что 'diffstring()' возвращает '" Hello "' без пробела. Почему два значения равны? – Pointy

+0

Пожалуйста, подумайте над тем, чтобы пересмотреть свой вопрос. Если вы действительно ожидаете, что JavaScript будет оценивать «Hello» == «[space] Hello» 'любым способом, кроме« false », то я не считаю, что кто-то может помочь вам изменить это - две строки разные. Кроме того, ознакомьтесь с документацией для плагина, на который вы ссылались: http://ejohn.org/projects/javascript-diff-algorithm/ – bwright

ответ

-1

Еще одно редактирование. После вашего комментария я сработал. Пожалуйста, см. Скрипку. https://jsfiddle.net/hc05fhxr/9/

код выглядит следующим образом, и вы можете изменить его, как вам нравится. Но он возвращает true для соответствия и возвращает несоответствия по запросу. Причина, по которой он всегда возвращал false, заключалась в том, что функция diffString() добавляет ненужную новую строку в возвращаемом результате. Я в основном просто удалил это и запустил тест.

var strng = diffString("asdfHello","Hello"); 
if(strng[-1]==/\n/){strng = strng.slice(0,-1)} 

if(strng===" Hello"){ 
    alert(true); 
}else{ 
    alert(strng); 
} 

Я отредактировал это так, чтобы он не вынимал последний символ строки, если это несоответствие. Пожалуйста, см. Скрипку снова.

+0

Почему этот ответ получает downvotes? –

+0

Я сказал в вопросе, что пространство в строковой переменной должно быть там, потому что этот код в str + = "" + out.n [i] .text + nSpace [i] + pre; имеет пробел –

+0

Я не вижу этого в вашем вопросе. – Toiletduck

Смежные вопросы