首页 > 解决方案 > 根据其中的数字子字符串拆分字符串

问题描述

我有一个字符串,例如

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 的,我在网上找不到答案

非常感谢您的帮助!

标签: c++stringsplitsubstring

解决方案


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 及更高版本具有用于在字符串中搜索模式的本机正则表达式库。


推荐阅读