版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42449444/article/details/89600457
请从字符串中提取以最后一个[img]开头、以最后一个[\img]结尾的字符串,未找到匹配的字符串返回"null"。
可能包含[img][\img]的字符串
截取后的字符串
bbb[img]ccc[img]ddd[\img]eee[\img]
[img]ddd[\img]eee[\img]
abc
null
先找出最后一个[img]的'['所在下标i和最后一个[\img]的']'所在下标j,最后一个[img]的'['所在下标i一定要小于最后一个[\img]的']'所在下标j才能截取子字符串进行输出(要是i>j就输出"null"),然后从i开始截取(j-i+1)个长度的子字符串进行输出即可。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string str;
while(getline(cin,str))
{
int len = str.length();
int i = str.rfind("[img]",len-1); //最后一个[img]的'['所在下标
int j = str.rfind("[\\img]",len-1) + 5; //最后一个[\img]的']'所在下标
if(i < j) // 可能出现\img前面没有img的情况
{
cout << str.substr(i,j-i+1) << endl; //从第一个[img]开始截取(j-i+1)个长度的子字符串
}
else
{
cout << "null" << endl;
}
}
return 0;
}