PB中取字符串子串的函数是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PB中取字符串子串的函数是啥相关的知识,希望对你有一定的参考价值。

Left()
功能得到字符串左部指定个数的字符。
语法Left ( string, n )
参数string:string类型,指定要提取子串的字符串n:long类型,指定子串长度返回值String。函数执行成功时返回string字符串左边n个字符,发生错误时返回空字符串("")。如果任何参数的值为NULL,Left()函数返回NULL。如果n的值大于string字符串的长度,那么Left()函数返回整个string字符串,但并不增加其它字符。

Mid()
功能取字符串的子串。
语法Mid ( string, start , length )
参数string:string类型,指定要从中提取子串的字符串start:long类型,指定子串第一个字符在string字符串中的位置,第一个位置为1length:long类型,可选项,指定子串的长度返回值String。函数执行成功时返回string字符串中从start位置开始、长度为length的子串。如果start参数的值大于string中字符个数,那么Mid()函数返回空字符串。如果省略了length参数或length参数的值大于从start开始、string字符串中余下字符的长度,那么Mid()函数返回所有余下的字符。如果任何参数的值为NULL,Mid()函数返回NULL。

Right()
功能从字符串右端取指定个数字符。
语法Right ( string, n )
参数string:string类型,指定要提取子串的字符串n:long类型,指定子串长度返回值String。函数执行成功时返回string字符串右边n个字符,发生错误时返回空字符串("")。如果任何参数的值为NULL,Right()函数返回NULL。如果n的值大于string字符串的长度,那么Right()函数返回整个string字符串,但并不增加其它字符。

参考资料:http://www.itll.net/Article/softtech/program/Powerbuilder/hs/200506/24948.html

参考技术A left right mid

字符串子串的查找

字符串子串的查找

 

// 字符串子串的查找

#include <iostream>
#include <string>

using namespace std;

/*
//string类的查找函数:
int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置
int find(const char *s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
int find(const char *s, int pos, int n) const;//从pos开始查找字符串s中前n个字符在当前串中的位置
int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
//查找成功时返回所在位置,失败返回string::npos的值
int rfind(char c, int pos = npos) const;//从pos开始从后向前查找字符c在当前串中的位置
int rfind(const char *s, int pos = npos) const;
int rfind(const char *s, int pos, int n = npos) const;
int rfind(const string &s,int pos = npos) const;
//从pos开始从后向前查找字符串s中前n个字符组成的字符串在当前串中的位置,成功返回所在位置,失败时返回string::npos的值
int find_first_of(char c, int pos = 0) const;//从pos开始查找字符c第一次出现的位置
int find_first_of(const char *s, int pos = 0) const;
int find_first_of(const char *s, int pos, int n) const;
int find_first_of(const string &s,int pos = 0) const;
//从pos开始查找当前串中第一个在s的前n个字符组成的数组里的字符的位置。查找失败返回string::npos
int find_first_not_of(char c, int pos = 0) const;
int find_first_not_of(const char *s, int pos = 0) const;
int find_first_not_of(const char *s, int pos,int n) const;
int find_first_not_of(const string &s,int pos = 0) const;
//从当前串中查找第一个不在串s中的字符出现的位置,失败返回string::npos
int find_last_of(char c, int pos = npos) const;
int find_last_of(const char *s, int pos = npos) const;
int find_last_of(const char *s, int pos, int n = npos) const;
int find_last_of(const string &s,int pos = npos) const;
int find_last_not_of(char c, int pos = npos) const;
int find_last_not_of(const char *s, int pos = npos) const;
int find_last_not_of(const char *s, int pos, int n) const;
int find_last_not_of(const string &s,int pos = npos) const;
//find_last_of和find_last_not_of与find_first_of和find_first_not_of相似,只不过是从后向前查找
*/
void calcSubStr(const string & str1, const string & str2)
{
    size_t weizhi = 0;
    int count = 0;
    while (true)
    {
        weizhi = str1.find(str2, weizhi);
        weizhi++;
        if (0 == weizhi)
        {
            break;
        }
        else
        {
            count++;
            cout << "子串出现的位置是: " << weizhi << endl;
        }
    }
    cout << "子串出现的次数是: " << count << endl;
}

/*
C语言库函数用于在字符串中查找子串。函数原型为char *(strstr)(const char *s1, const char *s2)
函数的参数是两个字符串,函数返回s2在s1中第一次出现的位置(字符指针)。如果在s1中没有找到s2,返回空。
如果s2为空,则返回s1。
*/
char* my_strstr(const char *s1, const char *s2)
{
    if (*s2 == \0) /*如果s2为空,则返回s1*/
        return ((char *)s1);
    for (; s1 != \0; ++s1) /*每次后移s1的位置,在新的位置进行下一次匹配*/
    {
        const char *sc1, *sc2;
        while ((*s1 != *s2) && (*s1 != \0)) ++s1; /*在s1中找到和s2第一个字符匹配的位置*/
        if (*s1 == \0) /*如果找不到,说明s1现在的位置不匹配,退出循环进行下一次匹配*/
            break;
        else /*如果找到和s2第一个字符匹配的位置,开始逐个匹配s2后面的字符*/
            for (sc1 = s1, sc2 = s2; sc1 != \0; ++sc1, ++sc2)
            {
                if (*sc2 == \0) /*如果匹配完毕,返回s1此时的位置*/
                    return ((char *)s1);
                else if (*sc1 != *sc2) /*如果后面有一个字符不匹配,说明s1现在的位置不匹配,退出循环进行下一次匹配*/
                    break;
            }
    }
    return (NULL);
}

int main(int argc, char * argv[])
{
    string str1, str2;
    cout << "请输入第一个字符串" << endl;
    cin >> str1;
    cout << "你输入的第一个字符串为: " << str1 << endl;
    cout << "请输入子串" << endl;
    cin >> str2;
    cout << "你输入的子串为: " << str2 << endl;

    calcSubStr(str1, str2);

    // 从父串中查找子串, 可以使用专门的KMP算法, 效率很好。

    system("pause");
    return 0;
}

 

以上是关于PB中取字符串子串的函数是啥的主要内容,如果未能解决你的问题,请参考以下文章

字符串子串的查找

求字符串不同子串个数

UVA 11475 后缀数组/KMP

检查“不为空”或空字符串的 PHP 语法是啥? [复制]

匹配重写规则的空字符串的正则表达式是啥?

在 Java 中连接空字符串的正确方法是啥?