找出输入文字中所有的数字串(一个只有数字的串,不是输出文字中所有的数字)

上周敲代码时,碰到一个题目,文字不多,但是要求还蛮多的。题目是这样的,给你们看一下:在这里插入图片描述

这个题目前两问还挺简单的,统计英文字母,用一个循环遍历文字,然后满足if条件用count计数就可以了。(注意:count使用前要清零哦)

if((x>='a'&&x<='z')||(x>='A'&&x<='Z'))
				count++;

将文字中的the 用a 来替换,同样也需要一个循环来遍历文字,不过在java中,String类有这样一个方法,可以直接进行替换:

s.replaceAll("the", "a")

前两问已经解决好了,我们现在来看一下第三问,之所有说它有点复杂,是因为对文字中数字串的理解。找出所有的数字串进行输出,是只能输出一个部分,这个部分只能包含数字,不能含有其他的字母,符号,也不是只输出数字,不管数字是不是连续。举个例子吧:输入这样的内容123 45a b67 8c9,则只能输出123,其他的内容均不能输出。

//   s是输入的所有文字
int k = 1; //k=1意味着下一个被检查的串首字符默认为数字
StringBuffer a = new StringBuffer();
System.out.println("该段文字所有的数字串有:");
for(int i=0;i<s.length();i++) {
    
	char x = s.charAt(i);
	if(x==' ')  //一个串检查完
	 {
    
		k = 1;   //k=1意味着下一个被检查的串首字符默认为数字
		if(a.length()!=0)
			System.out.print(a+" ");  //输出变量a中的内容
		a.setLength(0);   //清空变量a的内容
		continue;
	}
	if(Character.isDigit(x))
	{
      
		if(k==1)
		a.append(x);  //遇见数字,k=1,就追加到变量a 中
	}
	else//遇见非数字,清空a变量的内容,k=0
	{
    
		k = 0;  //k=0意味着被检查的串不满足条件,以后内容不会被追加到变量a中
		a.setLength(0);
	}
}

现在三个问题都已经解决了,我们来看一下最后的运行结果吧!
在这里插入图片描述
`

猜你喜欢

转载自blog.csdn.net/xiaobai_qian/article/details/105566540