c++ - 根据其中的数字子字符串拆分字符串
问题描述
我有一个字符串,例如
std::string input = "Trp80Ter";
我需要将它拆分为取数值前后的字母,获得:
std::string substring0 = "Trp";
std::string substring1 = "Ter";
int number = 80;
此外,它应该是字符串中出现的第一个数字,因为我也可以将值设为:
std::string input = "Arg305LeufsTer18";
// which I need to transform in:
std::string substring0 = "Arg";
std::string substring1 = "LeufsTer18";
int number = 305;
PS:字符串的第一个“字符”部分并不总是 3 字符长
我发现了一个类似的问题,但是是针对 JS 的,我在网上找不到答案
非常感谢您的帮助!
解决方案
std::string input = "...";
std::string::size_type pos1 = input.find_first_of("0123456789");
std::string::size_type pos2 = input.find_first_not_of("0123456789", pos1);
std::string substring0 = input.substr(0, pos1);
std::string substring1 = input.substr(pos2);
int number = std::stoi(input.substr(pos1, pos2-pos1));
或者,C++11 及更高版本具有用于在字符串中搜索模式的本机正则表达式库。
推荐阅读
- python - 在 Python 中:如果拆分字符串与列值匹配,如何比较并生成新列?
- linux - Yocto - 未应用补丁
- c# - 最大长度验证阻止我在 mvc6 中编写超过最大长度的内容
- python - 在 FTP 发送/接收软件的 while 循环中尝试/排除块
- aframe - AR.js 场景中可点击对象的位置错误
- python - 为什么我不能总结熊猫的价值?
- mysql - Sequelize 模型导出函数
- c# - 认知服务语音产生空文件
- objective-c - IOS-FreeRDP--ios 源无法运行 ENABLE_BITCODE=YES 设置不起作用
- c++ - MFC 图标没有变化