实现一个函数,传入参数为任意字符串,按行输出此字符串中连续出现的数字。例如:a1b23c45,输出的结果为1、23、45
#include"stdio.h"
void printnum(char s[])
{
for(int i=0;s[i]!='\0';i++)
{
if(s[i]>='0'&&s[i]<='9')
{
printf("%c",s[i]);
if(s[i+1]<='0'||s[i+1]>='9')
{
printf("\n");
}
}
}
}
int main()
{
char a[]="a1b23c45";
printnum(a);
return 0;
}
我觉得可以通过字符串切割,以非数字字符做为切割规则。
#include
using namespace std;
void fun( string str ){
for(int i=0;i if( ( str[i]>='0' && str[i]<='9') && ( str[i+1]<'0' || str[i+1]>'9' ) )
cout< else
if( str[i]>='0' && str[i]<='9' )
cout<<str[i];
}
}
int main(){
string str;
cin>>str;
fun( str );
return 0;
}
#include <iostream>
using namespace std;
void fun( string str ){
for(int i=0;i<str.size();i++){
if( ( str[i]>='0' && str[i]<='9') && ( str[i+1]<'0' || str[i+1]>'9' ) )
cout<<str[i]<<endl;
else
if( str[i]>='0' && str[i]<='9' )
cout<<str[i];
}
}
int main(){
string str;
cin>>str;
fun( str );
return 0;
}
java正则表达式匹配:
public static void main(String[] args) {
Pattern pattern = Pattern.compile("\d+");
Matcher matcher = pattern.matcher("sdf3534lk454lk6767");
while(matcher.find()){
System.out.println(matcher.group());
}
}