#string #search #index #byte-string #byte-slice #kmp

kmpsearch

在字节切片或字符串中,使用Knuth Morris Pratt算法进行字符串/字节模式搜索

2个版本 (1个稳定版)

1.0.0 2019年2月23日
0.1.0 2019年2月17日

#2470算法

MIT 许可协议

11KB
181

kmpsearch

允许在字节切片或字符串中搜索字节或字符串,使用Knuth Morris Pratt算法。KMP运行时间为O(n+h),其中n是针的长度,h是稻草堆的长度。

特别感谢PJB3005对AsRef的帮助,这使得这个库更易于使用。这是我第一个Rust crate,所以任何反馈都欢迎。GitHub接受pull请求。

用法

在字符串中匹配字符串

if "Hello World!".contains_needle("World") {
	println!("Matches!");
} else {
	println!("Doesn't match!");
}

在字节中匹配字节

if b"DEADBEEF".contains_needle(b"BEEF") {
	println!("Matches!");
} else {
	println!("Doesn't match!");
}

获取一个字符串在另一个字符串中的所有索引

let res = "That fox is a cool fox, he knows magic".indexesof_needle("fox");
assert_eq!(res.unwrap(), vec![5, 19]);

无运行时依赖