stringByReplacingCharactersInRange: withString: 實現字符串删除,替换

本文介绍如何使用Objective-C中的NSString方法stringByReplacingCharactersInRange进行字符串的指定位置替换操作,并通过实例展示了不同替换范围的效果。
NSString *str = @"1234567890";

 [str stringByReplacingCharactersInRange:NSMakeRange(str.length-1, 1) withString:@""];

NSLog(@"str = %@",  str);  // str = 123456789


 [str stringByReplacingCharactersInRange:NSMakeRange(str.length-1, 1) withString:@"1"];

解释:NSMakeRange(str.length-1, 1),将字符串str定位到第九个字符即‘9’,取长度为1的字符串,即9后第一个字符串 ‘0’,用字符串@“”替代‘0’,即所得的结果为“123456789”


NSString *str = @"1234567890";

 [str stringByReplacingCharactersInRange:NSMakeRange(str.length-2, 2) withString:@"aa"];

NSLog(@"str = %@",  str);  // str = 12345678aa


### 判断 `std::string` 是否以特定子字符串结尾 在 C++ 中,`std::string` 类型并未直接提供用于判断字符串是否以特定子字符串结尾的成员函数。然而可以通过字符串的 `substr()` 方法结合 `size()` 和 `compare()` 等操作实现这一功能。 假设要判断字符串 `str` 是否以子字符串 `suffix` 结尾,可以使用以下方式: ```cpp #include <iostream> #include <string> bool ends_with(const std::string& str, const std::string& suffix) { if (str.size() < suffix.size()) { return false; } return str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0; } int main() { std::string str = "example.txt"; std::string suffix = ".txt"; if (ends_with(str, suffix)) { std::cout << "The string ends with the specified suffix." << std::endl; } else { std::cout << "The string does not end with the specified suffix." << std::endl; } return 0; } ``` 上述代码中,`compare()` 方法用于比较 `str` 的末尾部分与 `suffix` 是否一致。若一致,则返回值为 `0`,表示匹配成功。该方法确保了在不依赖额外库函数的前提下,完成对字符串结尾的判断[^4]。 此外,也可以使用 `substr()` 提取字符串末尾的子串进行比较: ```cpp bool ends_with(const std::string& str, const std::string& suffix) { if (str.size() < suffix.size()) { return false; } return str.substr(str.size() - suffix.size()) == suffix; } ``` 这种方法更加直观,通过截取字符串末尾长度与 `suffix` 相同的部分,并与 `suffix` 进行比较来判断是否匹配。 无论采用哪种方式,都应在操作前检查字符串长度是否足够长以容纳目标子字符串,以避免越界访问。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值