对于a)& str b)字符串,检查字符串是空的还是空白的正确方法是什么?我以前是"aaa".len() == 0
做的,但我的直觉告诉我应该采用另一种方式吗?
答案 0 :(得分:21)
&str
和String
都有一个名为is_empty
的方法:
这是他们的使用方式:
assert_eq!("".is_empty(), true); // a)
assert_eq!(String::new().is_empty(), true); // b)
答案 1 :(得分:4)
其他人已经回复说Collection.is_empty
可以用来知道一个字符串是否为空,但假设“是空白”你的意思是“只由空格组成”那么你想要UnicodeStrSlice.is_whitespace()
,这将是对于空字符串和仅由White_Space
unicode属性设置的字符组成的字符串都是true。
只有字符串切片实现UnicodeStrSlice
,因此如果您从String
开始,则必须使用.as_slice()
。
tl; dr:s.is_whitespace()
if s: &str
,s.as_slice().is_whitespace()
if s: String
答案 2 :(得分:1)
在doc:
中找到impl Collection for String
fn len(&self) -> uint
fn is_empty(&self) -> bool
答案 3 :(得分:0)
可以使用以下方法检查仅空字符串或空白字符串:
s.trim().is_empty()
其中trim()
返回一个切片,其中从字符串(https://doc.rust-lang.org/stable/std/primitive.str.html#method.trim)的开头和结尾除去了空格字符。