Каков правильный способ проверить, является ли строка пустой или пустой для a) & str b) String? Раньше я делал это "aaa".len() == 0
, но должен ли мне другой способ, как говорит мне моя кишка?Проверьте, является ли строка пустой или пустой
ответ
Оба &str
и String
имеют метод, называемый is_empty
:
- документация для &str::is_empty
- документация для String::is_empty
Это, как они используются:
assert_eq!("".is_empty(), true);
assert_eq!("".to_string().is_empty(), true);
Найдено в док:
impl Collection for String
fn len(&self) -> uint
fn is_empty(&self) -> bool
Len() возвращает блок? –
@AlexanderSupertramp, что еще? –
как насчет чего еще? –
Другие ответили, что Collection.is_empty
могут быть использованы, чтобы знать, если строка пуста, но при условии, на «пустой» вы имеете в виду «состоит только из пробелов», то вы хотите UnicodeStrSlice.is_whitespace()
, что будет верно как для пустых строк, так и для строк, состоящих исключительно из символов с набором свойств unicode .
Только набор кусочков ломтиков UnicodeStrSlice
, поэтому вам нужно будет использовать .as_slice()
, если вы начинаете с String
.
TL; др: s.is_whitespace()
, если s: &str
, если s.as_slice().is_whitespace()
s: String
Кажется, что это неустойчивый внешний ящик, есть ли другой способ обхода? – PENGUINLIONG
Версия «.to_string() является ненужным распределением строк. – pyrho
@pyrho Я считаю, что намерение состояло в том, чтобы показать, что и '& str', и' String' имеют метод 'is_empty()'. – Manishearth
Я так догадался, я просто указывал, что это была плохая практика (: – pyrho