Rust 检查字符串是空的还是空的
对于a)&str b)字符串,检查字符串是否为空的正确方法是什么?我以前是通过Rust 检查字符串是空的还是空的,rust,Rust,对于a)&str b)字符串,检查字符串是否为空的正确方法是什么?我以前是通过“aaa.len()==0来做这件事的,但我的直觉告诉我还有另一种方法吗?可以在文档中找到: impl Collection for String fn len(&self) -> uint fn is_empty(&self) -> bool &str和String都有一个名为为空的方法: 文件 文件 这就是它们的使用方式: assert_eq!("".is_empt
“aaa.len()==0
来做这件事的,但我的直觉告诉我还有另一种方法吗?可以在文档中找到:
impl Collection for String
fn len(&self) -> uint
fn is_empty(&self) -> bool
&str
和String
都有一个名为为空的方法:
- 文件
- 文件
这就是它们的使用方式:
assert_eq!("".is_empty(), true); // a)
assert_eq!(String::new().is_empty(), true); // b)
其他人回答说,Collection.is_empty
可用于知道字符串是否为空,但假设“is blank”的意思是“仅由空格组成”,则您需要,这对于空字符串和仅由具有White_Space
unicode属性集的字符组成的字符串都适用
只有字符串切片实现切片
,因此如果从字符串开始,则必须使用
tl;dr:s.is_whitespace()
如果s:&str
,s.as_slice().is_whitespace()
如果s:String
空字符串或只有空格的字符串可以通过以下方式进行检查:
s.trim().is_empty()
其中trim()
返回一个从字符串()的开头和结尾删除空白字符的片段。@AlexanderSupertramp还有什么?还有什么呢?@AlexanderSupertramp哦,我误读了你,抱歉。由于长度不能为负,因此它返回一个无符号int@AlexanderSupertramp:在语言中,单位是写的()
,而不是字面上的unit
@FrancisGagné,单位是写为单位的,单位的值是()。to_字符串()版本是一个不必要的字符串分配。@pyrho我认为其目的是表明&str
和String
都有is\u empty()
方法。我猜是这样的,我只是指出这是一个不好的做法(:FYI,)。to\u String()
不会导致分配(至少在当前情况下)。它转换成一个RawVec::具有_容量(0)
,根据Rust源代码,它不会分配。它似乎是一个不稳定的外部板条箱,是否有其他解决方法?我原以为这不会很好执行,但后来我查看了源代码。回答不错!