package yu_bytes import ( "bytes" yu_fast "gogs.qqck.cn/s/tools/fast" ) // Lines // // @Description: 寻找数据 // @param s 被寻找的数据 // @param sep 欲寻找的数据 // @return int 找到次数,相邻的"sep"或"s"=="sep"则不计数,不以"sep"结尾则"i+1" func Lines(s, sep []byte) int64 { j_s_len, j_sep_len := len(s), len(sep) if j_sep_len == j_s_len { if j_sep_len == 0 { return 0 } if yu_fast.B2S(s) == yu_fast.B2S(sep) { return 0 } return 1 } if j_sep_len > j_s_len { return 1 } j_count, j_i := int64(0), 0 if j_sep_len == 1 { j_i_old := 0 for j_i < j_s_len { if s[j_i] == sep[0] { if j_i != j_i_old { j_count++ } j_i++ j_i_old = j_i } else { j_i++ } } if j_i != j_i_old { j_count++ } return j_count } for j_i+j_sep_len < j_s_len { j_index := bytes.Index(s[j_i:], sep) if j_index > -1 { j_i += j_index + j_sep_len if j_index > 0 { j_count++ } } else { j_count++ break } } return j_count }