c++ string startsWith endswith

模拟一下

#include<string>
#include<iostream>
using namespace std;

int startsWith(string s, string sub){
        return s.find(sub)==0?1:0;
}

int endsWith(string s,string sub){
        return s.rfind(sub)==(s.length()-sub.length())?1:0;
}

int main(){
        string str = "helloWorld";
        string preStr = "he";
        string sufStr = "rld";
        if(startsWith(str,preStr)){
                cout<<str + " starts with "+preStr<<endl;
        }
        if(endsWith(str,sufStr)){
                cout<<str+" ends with "+sufStr<<endl;
        }
        return 0;
}
### C++ 和 Java 中 `string` 类型的常用方法总结 #### C++ 的 `std::string` 常用方法 以下是 C++ 中标准库中的 `std::string` 提供的一些常见操作: 1. **将数值转换为字符串** 使用 `to_string()` 方法可以轻松地将任意算术类型的值(如整数、浮点数等)转换成字符串。 ```cpp int num = 42; std::string str_num = std::to_string(num); // 将整数转为字符串 ``` 2. **获取子串** 利用成员函数 `substr(size_t pos, size_t len)` 获取从指定位置开始的子串,其中 `pos` 是起始索引,`len` 表示要截取的长度。 ```cpp std::string s = "hello world"; std::string sub = s.substr(0, 5); // 截取从第0位到第5位之前的字符 "hello" ``` 3. **查找子串的位置** 成员函数 `find(const char* s)` 返回首次匹配子串的位置;如果未找到,则返回 `std::string::npos`。 ```cpp std::string text = "The quick brown fox jumps over the lazy dog."; size_t index = text.find("fox"); // 查找 "fox" 出现的位置 if (index != std::string::npos) { std::cout << "Found 'fox' at position: " << index << std::endl; } ``` 4. **替换子串** 使用 `replace(size_t pos, size_t n, const char *s)` 替换从某个位置开始的一段文字。 ```cpp std::string sentence = "I love apples"; sentence.replace(7, 6, "bananas"); std::cout << sentence; // 输出 "I love bananas" ``` 5. **比较两个字符串** 运算符 `<`, `>`, `==` 等可以直接用于比较两个字符串的内容。对于更复杂的场景可调用 `compare()` 方法来判断大小关系。 ```cpp std::string a = "apple", b = "banana"; if(a.compare(b)<0){ std::cout<<"a is lexicographically smaller than b"<<std::endl; }else{ std::cout<<"b is lexicographically smaller or equal to a"<<std::endl; } ``` --- #### Java 的 `String` 类常用方法 Java 中的 `String` 属于不可变对象,因此每次修改都会创建新的实例。 1. **提取子串** 调用 `substring(int beginIndex, int endIndex)` 来获得原字符串的一部分副本,注意结束下标不包含该处字符。 ```java String greeting = "HelloWorld!"; System.out.println(greeting.substring(0, 5)); // 打印 Hello ``` 2. **拼接字符串** 可通过加号运算符或者 `concat(String other)` 实现连接功能。 ```java String firstPart = "Good "; String secondPart = "Morning!"; String fullGreet = firstPart.concat(secondPart); System.out.println(fullGreet); // Good Morning! ``` 3. **比较两字符串是否相同** 不仅能依靠 `equals(Object anObject)` 测试逻辑上的平等性,还可以借助 `compareTo(String anotherString)` 计算基于字典序的结果差异。 当两者完全一致时返回零;否则依据 ASCII 编码表顺序给出正值或负值表示前者大于后者还是小于后者的情况[^3]。 ```java String wordA="zebra",wordB="antelope"; int result=wordA.compareTo(wordB); if(result<0){ System.out.printf("%s comes before %s%n",wordA,wordB); } else if(result>0){ System.out.printf("%s comes after %s%n",wordA,wordB); } else{ System.out.printf("%s equals %s%n",wordA,wordB); } ``` 4. **搜索特定模式是否存在以及其所在位置** 配合正则表达式的强大能力,利用诸如 `matches()`,`contains(CharSequence s)`,`startsWith(prefix)`,`endsWith(suffix)` 或者更为灵活通用版本即带参数形式的 `indexOf(int ch)/lastIndexOf(int ch)` 定位单个字符初次/最后一次显现之处亦或是整个片段最早出现地址等等细节信息均可轻易达成目标需求。 ```java boolean matchResult = "abc".matches("[a-z]+"); // true boolean containsExample = "abcdefg".contains("cde");//true int startWithCheck = "Sample Text".startsWith("Sam")?1:-1;//positive value means yes. ``` --- ### 总结对比 无论是哪种编程语言下的实现方式都提供了丰富的接口支持日常开发工作中涉及到的各种关于处理文本数据的需求。然而需要注意的是由于各自设计理念的不同,在某些方面可能存在细微差别比如性能考量上可能有所侧重所以实际应用过程中还需结合具体项目背景综合评估选用最为合适的解决方案才是明智之举。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值