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
}
