Function SplitAfterN

Source
pub fn SplitAfterN(
    s: impl AsRef<[byte]>,
    sep: impl AsRef<[byte]>,
    n: int,
) -> Vec<Vec<byte>>
Expand description

SplitAfterN slices s into subslices after each instance of sep and returns a slice of those subslices. If sep is empty, SplitAfterN splits after each UTF-8 sequence. The count determines the number of subslices to return:

n > 0: at most n subslices; the last subslice will be the unsplit remainder.
n == 0: the result is [] (zero subslices)
n < 0: all subslices

Edge cases for s and sep (for example, empty strings) are handled as described in the documentation for SplitAfter.

zh-cn 用从s中出现的sep后面切断的方式进行分割,会分割到最多n个子切片,并返回生成的所有 &[byte]切片组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个&[byte]切片

参数n决定返回的切片的数目:


n > 0 : 返回的切片最多n个子切片;最后一个子切片包含未进行切割的部分。
n == 0: 返回[]
n < 0 : 返回所有的子切片组成的切片

§Example

use gostd_bytes as bytes;
use gostd_builtin::byte;
// n == 0 返回 []
   assert_eq!(Vec::<Vec<byte>>::new(), bytes::SplitAfterN(",a,b2,c".as_bytes(), ",".as_bytes(), 0));
   assert_eq!(vec![",a,b2,c".as_bytes()], bytes::SplitAfterN(",a,b2,c".as_bytes(), ",".as_bytes(), 1));
   assert_eq!(vec![",".as_bytes(), "a,".as_bytes(), b"b2,".as_ref(), b"c".as_ref()],bytes::SplitAfterN(",a,b2,c", ",", -1));
   assert_eq!(vec![b",".to_vec(), b"a,b2,c".to_vec()], bytes::SplitAfterN(",a,b2,c", ",", 2));
   assert_eq!(vec![",".as_bytes(), "a,".as_bytes(), "b2,c".as_bytes()],bytes::SplitAfterN(",a,b2,c".as_bytes(), ",".as_bytes(), 3));
   assert_eq!(vec![b",".as_ref(), b"a,".as_ref(), b"b2,".as_ref(), b"c".as_ref()],bytes::SplitAfterN(",a,b2,c".as_bytes(), ",".as_bytes(), 4));
// 当n大于最大子串数量,也只返回最大值。
   assert_eq!(vec![b",".to_vec(), b"a,".to_vec(), b"b2,".to_vec(), b"c".to_vec()],bytes::SplitAfterN(",a,b2,c".as_bytes(), ",".as_bytes(), 5));
   assert_eq!(vec![",".as_bytes().to_vec(), "a,".as_bytes().to_vec(), "b2,".as_bytes().to_vec(), "c".as_bytes().to_vec()],bytes::SplitAfterN(",a,b2,c".as_bytes(), ",".as_bytes(), 10));