在内存在查找子串

//在一段内存缓冲中查找指定字符串的位置,从头开始查找,区分大小写

//返回第一个找到的位置。
//str1 - 内存缓冲的头指针
//nLen1 - 内存缓冲长度
//str2 - 要查找匹配的字符串
bool bcompi(char byA, char byB)
{
    if (byA - byB == 0)
    {
        return true;
    }
    else
    {
        if (!((byA >= 'A' && byA <= 'Z') || (byA >= 'a' && byA <= 'z')))
            return false;

        if (!((byB >= 'A' && byB <= 'Z') || (byB >= 'a' && byB <= 'z')))
            return false;

        if ((byA - byB == 'a' - 'A') || (byB - byA == 'a' - 'A'))
            return true;
        else
            return false;
    }
}


char * memistr(const char * str1, int nLen1, const char * str2)
{
    if ((NULL == str1) || (NULL == str2) || (nLen1 <= 0))
        return NULL;
 
    long ls1 = nLen1;
    char *cp = (char *) str1;
    char *s1, *s2;
 
    if ( !*str2 )
        return((char *)str1);
 
    while (ls1 > 0)
    {
        s1 = cp;
        s2 = (char *) str2;
 
        while ( *s1 && *s2 && bcompi(*s1, *s2) )
            s1++, s2++;
 
        if (!*s2)
            return(cp);
 
        cp++;
        ls1--;
    }
 
    return(NULL);

}


### 回答1: 在 Python ,要提取一个字符串的子串,可以使用字符串切片(slice)操作。字符串切片的基本语法为: ```python str[start:end:step] ``` 其,start 表示子串的起始位置,end 表示子串的结束位置(不包含该位置的字符),step 表示切片的步长,默认为 1。 例如,下面的代码,我们从一个字符串提取了一个子串: ```python str = "hello world" sub_str = str[3:8] print(sub_str) ``` 输出结果为: ``` lo wo ``` 需要注意的是,在 Python ,字符串的下标从 0 开始计数。因此,上面的代码,start 参数为 3,表示从第 4 个字符开始提取;而 end 参数为 8,表示提取到第 8 个字符之前(即第 7 个字符)。 如果省略 start 参数,则默认从字符串的第一个字符开始提取;如果省略 end 参数,则默认一直提取到字符串的末尾。例如: ```python str = "hello world" sub_str = str[:8] print(sub_str) # 输出:hello wo sub_str = str[3:] print(sub_str) # 输出:lo world sub_str = str[:] print(sub_str) # 输出:hello world ``` 上面的代码,我们分别省略了 start 和 end 参数,或者同时省略了两个参数。这时,Python 会自动使用默认值进行切片。另外,还可以通过设置 step 参数来控制切片的步长。例如: ```python str = "hello world" sub_str = str[::2] print(sub_str) # 输出:hlowrd sub_str = str[1::2] print(sub_str) # 输出:el ol ``` 上面的代码,我们分别设置了 step 参数为 2 或 -2,从而实现了每隔一个字符或每隔一个字符取一个字符的切片操作。需要注意的是,当 step 参数为负数时,表示从右往左切片。这时,start 和 end 参数的默认值也会相应地改变。比如,当 step=-1 时,start 和 end 的默认值分别变为 len(str)-1 和 -1,即从字符串末尾往前提取所有字符。 ### 回答2: 在Python,我们可以使用切片来提取子串。切片是通过指定索引范围来选择特定的字符串部分。 首先,我们需要了解Python字符串的索引是从0开始的。例如,字符串"Hello, World!"的第一个字符是"H",它的索引为0。 要提取子串,我们可以使用以下语法:string[start:end:step]。其,start是子串的起始索引(包括),end是子串的结束索引(不包括),step是步长(可选,用于指定每隔多少个字符取一个字符,默认为1)。 例如,我们有一个字符串"Hello, World!",我们可以提取"Hello"这个子串。我们可以通过指定起始索引为0,结束索引为5来实现,即string[0:5]。 另外,我们还可以使用负数索引来从字符串末尾开始计数。例如,字符串"Hello, World!"的倒数第一个字符是"!",它的索引为-1。 如果我们要提取倒数第一个单词"World",我们可以通过指定起始索引为-6来实现,即string[-6:]。 如果我们想要按照一定的步长提取子串,可以在切片语法指定step的值。例如,字符串"Hello, World!"每隔一个字符提取一个子串,我们可以通过string[0:12:2]来实现。 切片语法非常灵活,可以根据具体需求来提取想要的子串。在实际使用,我们可以根据字符串的长度和具体需求灵活选择合适的切片语法来提取子串。 ### 回答3: 在Python提取子串可以通过字符串的切片操作来实现。切片操作通过指定字符串的起始索引和结束索引来提取需要的子串。 字符串的切片操作的语法格式如下: ``` substr = string[start:end] ``` 其,`string`是需要进行切片操作的字符串,`start`是子串的起始索引(包含在内),`end`是子串的结束索引(不包含在内)。切片操作将会返回一个新的字符串。 例如,我们有一个字符串`str = "Hello, World!"`,我们想提取其子串`World`,则可以使用如下代码: ``` sub_str = str[7:12] print(sub_str) # 输出:World ``` 注意,字符串的索引从0开始,所以起始索引`7`对应的是字符`W`,结束索引`12`对应的是字符`d`。 除了指定起始索引和结束索引,我们还可以省略其一个或两个参数来进行切片操作。如果省略了起始索引,则默认从字符串首字符开始;如果省略了结束索引,则默认截取到字符串末尾。例如: ``` sub_str1 = str[7:] # 从索引7开始截取到字符串末尾 sub_str2 = str[:5] # 从字符串首字符开始截取到索引5(不包含) sub_str3 = str[:] # 截取整个字符串 ``` 总结来说,Python提取子串可以通过字符串的切片操作来实现,根据起始索引和结束索引来指定需要提取的子串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值