當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Rust Pattern用法及代碼示例

本文簡要介紹rust語言中 Trait std::str::pattern::Pattern 的用法。

用法

pub trait Pattern<'a> {
    type Searcher: Searcher<'a>;
    fn into_searcher(self, haystack: &'a str) -> Self::Searcher;

    fn is_contained_in(self, haystack: &'a str) -> bool { ... }
    fn is_prefix_of(self, haystack: &'a str) -> bool { ... }
    fn is_suffix_of(self, haystack: &'a str) -> bool    where        Self::Searcher: ReverseSearcher<'a>,
    { ... }
    fn strip_prefix_of(self, haystack: &'a str) -> Option<&'a str> { ... }
    fn strip_suffix_of(self, haystack: &'a str) -> Option<&'a str>    where        Self::Searcher: ReverseSearcher<'a>,
    { ... }
}

一種字符串模式。

Pattern<'a> 表示實現類型可以用作在 &'a str 中搜索的字符串模式。

例如,'a'"aa" 都是匹配字符串 "baaaab" 中索引 1 的模式。

特征本身充當關聯 Searcher 類型的構建器,該類型執行查找字符串中出現的模式的實際工作。

根據模式的類型, str::find str::contains 等方法的行為可能會發生變化。下表說明了其中一些行為。

圖案類型匹配條件
&str是子串
char包含在字符串中
&[char]切片中的任何字符都包含在字符串中
F: FnMut(char) -> boolF 為字符串中的字符返回 true
&&str是子串
&String是子串

例子

// &str
assert_eq!("abaaa".find("ba"), Some(1));
assert_eq!("abaaa".find("bac"), None);

// char
assert_eq!("abaaa".find('a'), Some(0));
assert_eq!("abaaa".find('b'), Some(1));
assert_eq!("abaaa".find('c'), None);

// &[char; N]
assert_eq!("ab".find(&['b', 'a']), Some(0));
assert_eq!("abaaa".find(&['a', 'z']), Some(0));
assert_eq!("abaaa".find(&['c', 'd']), None);

// &[char]
assert_eq!("ab".find(&['b', 'a'][..]), Some(0));
assert_eq!("abaaa".find(&['a', 'z'][..]), Some(0));
assert_eq!("abaaa".find(&['c', 'd'][..]), None);

// FnMut(char) -> bool
assert_eq!("abcdef_z".find(|ch| ch > 'd' && ch < 'y'), Some(4));
assert_eq!("abcddd_z".find(|ch| ch > 'd' && ch < 'y'), None);

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Trait std::str::pattern::Pattern。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。