Какой правильный способ проверить, является ли строка пустой или пустой для a) & str b) String? Раньше я делал это с помощью "aaa".len() == 0
, но должен ли другой способ, как говорит мне моя кишка?
Проверьте, что строка пустая или пустая.
Ответ 1
И &str
и String
имеют метод is_empty
:
- Документация для & str :: is_empty
- Документация для String :: is_empty
Вот как они используются:
assert_eq!("".is_empty(), true); // a)
assert_eq!(String::new().is_empty(), true); // b)
Ответ 2
Другие ответили, что Collection.is_empty
можно использовать, чтобы знать, является ли строка пустой, но если предположить, что "пусто" означает "составлено только из пробелов", тогда вы хотите UnicodeStrSlice.is_whitespace()
, который будет истинным как для пустых строк, так и для строк, состоящих исключительно из символов с набором свойств White_Space
unicode.
Только строковые срезы реализуют UnicodeStrSlice
, поэтому вам нужно будет использовать .as_slice()
, если вы начинаете с String
.
tl; dr: s.is_whitespace()
, если s: &str
, s.as_slice().is_whitespace()
, если s: String
Ответ 3
Найдено в документе:
impl Collection for String
fn len(&self) -> uint
fn is_empty(&self) -> bool
Ответ 4
Пустая строка или строка с пробелами может быть проверена с помощью:
s.trim().is_empty()
где trim()
возвращает фрагмент с пробельными символами, удаленными из начала и конца строки (https://doc.rust-lang.org/stable/std/primitive.str.html#method.trim).