Значение String.Format в C# в следующем контексте?
Я просто просматривал определенный код... Я хотел знать, что означает следующий код
string format = "//User[UserName=\"{0}\" and EncryptPassword=\"{1}\"]";
string xpath = String.Format( format, userName, password );
Позже xpath используется для создания объекта xPathNodeIterator. Я не совсем понимаю, как используется String.Format и через какой узел будет проходить XPathNodeIterator, если я выполню итерацию?
4 ответа
Прочитайте детали String.Format. Это
Заменяет каждый элемент формата в указанной строке текстовым эквивалентом значения соответствующего объекта.
это означает, что xpath будет содержать строку формата, где {0} в строке формата будет заменено значением имени пользователя, а {1} будет заменено значением пароля
При условии, что
string userName = "Ehsan";
string password = "Password";
string format = "//User[UserName=\"{0}\" and EncryptPassword=\"{1}\"]";
string xpath = String.Format(format, userName, password);
Xpath будет эквивалентен
//User[UserName="Ehsan" and EncryptPassword="Password"]
Это примерно эквивалентно коду
string xpath = "//User[UserName=\"" + userName.ToString() + "\" and EncryptPassword=\"" + password.ToString() + "\"]";
String.Format
просто позволяет легко заменять заполнители в тестовых строках и дополнительно добавлять дополнительное форматирование.
Предполагать:
userName = "Peter"
password = "abc123"
Ваш xpath будет:
String.Format(format, userName, password)
String.Format("//User[UserName=\"{0}\" and EncryptPassword=\"{1}\"]", "Peter", "abc123")
Поскольку {0} заменяется на userName, "Peter", а {1} заменяется на passowrd, "abc123", ваш xpath становится:
//User[UserName="Peter" and EncryptedPassword="abc123"]
Следует помнить, что все эти {0}, {1} и т. Д. Будут заменены на следующие строки.
Это просто означает "использовать userName
а также password
за {0}
а также {1}
соответственно в строке "//User[UserName=\"{0}\" and EncryptPassword=\"{1}\"]";
Это даст вам полученную строку:
"//User[UserName=\"John\" and EncryptPassword=\"correctHorseBatteryStaple\"]"
(при условии, что значение userName было John
и... ну, вы можете угадать пароль).