2012-02-17 6 views
0

Привет, ребята, я пытаюсь создать программу на C#, где я сравниваю две строки, в которых внутри строк они имеют двойные кавычки. Моя проблема заключается в том, как сравнить их для равенства, потому что кажется, что компилятор игнорирует слова в кавычках и не дает мне правильного сравнения.Сравнение строк с кавычками

Примером может служить, если

string1 = Hi "insert name" here. 
string2 = Hi "insert name" here. 

Я хочу использовать string1.equals(string2). Но, похоже, он говорит мне, что строки не равны. Как мне это сделать? Пожалуйста помоги.

PS. Я не могу контролировать, как будут выглядеть строки, поскольку они являются динамическими переменными. Поэтому я не могу просто добавить к нему escape-последовательность.

+0

Используйте символы escape. – Jayy

+0

сопоставляемые строки предназначены для того, чтобы не иметь escape-символов, поскольку они являются фиксированными сообщениями, которые поступают из файла excel. – user1215604

+0

У меня нет контроля над тем, как будут выглядеть строки, поскольку они являются динамическими переменными. – user1215604

ответ

2
string s1 = "Hi \"insert name\" here."; 
string s2 = "Hi \"insert name\" here."; 

Console.WriteLine((s1 == s2).ToString()); //True 

У меня нет никаких проблем ...

+0

Да, я понял, что у вас не будет проблем, если строки будут введены таким образом. Но эти строки были внутри таблицы Excel и были написаны как «Привет» вставить имя «здесь». – user1215604

+0

У меня нет контроля над тем, как будут выглядеть строки, поскольку они являются динамическими переменными. – user1215604

+0

Когда вы читаете из этой таблицы Excel и присваиваете ее переменной, не будет ли «Привет» вставить имя «здесь», чтобы оно стало «Привет» имя \ "здесь"? – Tung

1

.NET не будет игнорировать значение строки в двойных кавычках при выполнении сравнений. Я думаю, что ваш анализ того, что происходит, является ошибочным. Например, учитывая следующие значения:

var string1 = "This contains a \"quoted value\""; 
var string2 = "This contains a \"quoted value\""; 
var string3 = "This contains a \"different value\""; 

string1.Equals(string2) будет равна true и string2.Equals(string3) будет равна false.

Вот некоторые возможные причины того, почему вы не видите ожидаемый результат при сравнении:

  1. Одна строка может содержать различные символы кавычек, чем другой. Например, "this" и “this” являются совершенно разными строками.
  2. Возможно, ваше сравнение может быть неудачным из-за несоответствия другого содержимого. Например, одна строка может иметь конечные пробелы, а другая - нет.
  3. Вы можете сравнить два объекта вместо двух строки. Object.Equals сравнивает, являются ли два объекта одним и тем же объектом. Если вы не имеете дело с ссылками String, может произойти неправильное сравнение.

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

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