模式串匹配和替换 更多...
宏定义 | |
#define | MSTR_IMP_SOURCES 1 |
#define | BM_THRESHOLD_CNT 6 |
指定使用BM算法的阈值 | |
#define | BM_CHAR_INDEX_MAX 256 |
单个char的最大值(unsigned) | |
函数 | |
static mstr_result_t | mstr_find_simple (isize_t *result, const char *main_str, usize_t main_str_cnt, usize_t begin_pos, const char *pattern, usize_t pattern_cnt) |
字符串查找(仅返回字符的count) | |
static mstr_result_t | patt_match_impl (isize_t *res, const mstr_char_t *mstr, usize_t mstr_cnt, const mstr_char_t *patt, usize_t patt_cnt) |
子串匹配 | |
static mstr_result_t | mstr_retain_start_with_impl (MString *str, const char *patt, usize_t patt_cnt) |
mstr_retain (start_with) 的实现 | |
static mstr_result_t | mstr_retain_end_with_impl (MString *str, const char *patt, usize_t patt_cnt) |
mstr_retain (end_with) 的实现 | |
static mstr_result_t | mstr_retain_all_impl (MString *str, const char *patt, usize_t patt_cnt) |
mstr_retain (all) 的实现 | |
static mstr_result_t | mstr_retain_all_impl_helper (MString *out_str, const MString *src_str, const char *patt, usize_t patt_cnt, usize_t patt_len) |
mstr_retain (all) 的实现 (helper) | |
static void | make_jump_table (uint8_t *table, const mstr_char_t *patt, usize_t patt_cnt) |
按照模式串 patt 构造跳转表 | |
static mstr_result_t | unicode_length_of (usize_t *len, const char *str, usize_t cnt) |
计算unicode字符串的字符长度 | |
mstr_find (const MString *str, MStringMatchResult *f_res, usize_t begin_pos, const char *pattern, usize_t pattern_cnt) | |
查找子串第一次出现的位置 | |
mstr_replace (MString *str, MStringReplaceOption opt, const char *pattern, usize_t pattern_cnt, const char *replace_to, usize_t replace_to_cnt) | |
进行字符串替换(单个目标) | |
mstr_retain (MString *str, MStringReplaceOption opt, const char *patt, usize_t patt_cnt) | |
从字符串中移除所有匹配substr的字符 | |
模式串匹配和替换
#define BM_CHAR_INDEX_MAX 256 |
单个char的最大值(unsigned)
#define BM_THRESHOLD_CNT 6 |
指定使用BM算法的阈值
#define MSTR_IMP_SOURCES 1 |
|
static |
按照模式串 patt 构造跳转表
[out] | table | 跳转表 |
[in] | patt | 模式串 |
[in] | patt_cnt | 模式串的字符数 |
mstr_find | ( | const MString * | str, |
MStringMatchResult * | f_res, | ||
usize_t | begin_pos, | ||
const char * | pattern, | ||
usize_t | pattern_cnt | ||
) |
查找子串第一次出现的位置
[in] | str | 字符串a |
[out] | f_res | 查找结果 |
[in] | begin_pos | 开始查找的位置 |
[in] | pattern | 需要查找的子串 |
[in] | pattern_cnt | pattern的char个数 |
|
static |
字符串查找(仅返回字符的count)
[out] | result | 结果, -1表示没有找到 |
[in] | main_str | 主串 |
[in] | main_str_cnt | 主串的字符计数 |
[in] | begin_pos | 开始查找的位置的字符计数偏移量 |
[in] | pattern | 模式串 |
[in] | pattern_cnt | 模式串的长度计数 |
mstr_replace | ( | MString * | str, |
MStringReplaceOption | opt, | ||
const char * | pattern, | ||
usize_t | pattern_cnt, | ||
const char * | replace_to, | ||
usize_t | replace_to_cnt | ||
) |
进行字符串替换(单个目标)
[in,out] | str | 字符串 |
[in] | opt | 替换模式 |
[in] | pattern | 需要替换的子串模式 |
[in] | pattern_cnt | 模式串的字符计数 |
[in] | replace_to | 需要替换为的结果 |
[in] | replace_to_cnt_cnt | 结果的字符计数 |
mstr_retain | ( | MString * | str, |
MStringReplaceOption | opt, | ||
const char * | pattern, | ||
usize_t | pattern_cnt | ||
) |
从字符串中移除所有匹配substr的字符
[in,out] | str | 字符串 |
[in] | opt | 替换模式 |
[in] | pattern | 需要移除的pattern |
[in] | pattern_cnt | 需要移除的pattern的字符计数 |
|
static |
mstr_retain (all) 的实现
[in,out] | str | 需要进行剔除的字符串 |
[in] | patt | 模式串 |
[in] | patt_cnt | 模式串的字符计数 |
|
static |
mstr_retain (all) 的实现 (helper)
[in] | out_str | 剔除结果, 外部已经init, 并保留了足够的内存区 |
[in] | src_str | 需要进行剔除的字符串 |
[in] | patt | 模式串 |
[in] | patt_cnt | 模式串的字符计数 |
[in] | patt_len | 模式串的长度 |
|
static |
mstr_retain (end_with) 的实现
[in,out] | str | 需要进行剔除的字符串 |
[in] | patt | 模式串 |
[in] | patt_cnt | 模式串的字符计数 |
|
static |
mstr_retain (start_with) 的实现
[in,out] | str | 需要进行剔除的字符串 |
[in] | patt | 模式串 |
[in] | patt_cnt | 模式串的字符计数 |
|
static |
子串匹配
[out] | res | 匹配结果 |
[in] | mstr | 主串 |
[in] | mstr_cnt | 主串长度 |
[in] | patt | 模式串 |
[in] | patt_len | 模式串长度 |
|
static |
计算unicode字符串的字符长度