Можем ли мы сравнить два файла JavaScript с помощью C#?

Я попытался сравнить два текстовых файла. Если они содержат одинаковые данные, но есть разница даже в один пробел, результат отображается как "другой".

Может кто-нибудь сказать мне, как сравнить два файла JavaScript с помощью C#?

3 ответа

Поскольку JavaScript допускает пробелы (допускает любое количество пробелов при условии правильного синтаксиса), самое простое, что нужно сделать, если вы хотите сравнить все, кроме пробелов, это заменить регулярным выражением:

Regex _r = new Regex(@"\s+", RegexOptions.Compiled);
string result = _r.Replace(value, " ");

Запустите это для обоих файлов и сравните результаты; он заменяет любую последовательность стандартных пробельных символов (пробел, табуляция, возврат каретки, вертикальная табуляция и т. д.) одним пробелом. Затем вы можете сравнить с Equals (с учетом регистра или нет, как вам нужно).

Конечно, пробелы значимы внутри строк, поэтому предполагается, что обработка строк во всех сравниваемых файлах не слишком зависит от пробелов.

Однако два совершенно разных файла кода могут иметь одинаковые эффекты, поэтому, если вы к этому стремитесь, у вас впереди тяжелая работа.

Вам просто нужно знать, если они точно такие же? Если это так, вы можете просто загрузить их в память и сравнить свойство.length()...

Технически, если один файл содержит лишний пробел, они не являются "одинаковыми". Сначала я бы сравнил длины, и если они не совпадают, вам нужно сделать побайтное сравнение. Если вы хотите удалить лишние пробелы, вы, вероятно, захотите сначала сделать что-то вроде Trim() для содержимого обоих файлов.

Вот ссылка на старый пост MS, описывающий, как создать функцию сравнения файлов:

http://support.microsoft.com/kb/320348

Другие вопросы по тегам