永发信息网

java中应用replaceAll的时候如何跳过空格?

答案:1  悬赏:80  手机版
解决时间 2021-08-11 06:50

我想写一个java程序,目的是删除一个输入的句子中的所有元音字母(aeiou),我写了以下的代码:

Scanner input=new Scanner(System.in);

str = input.next();

newstr=str.replaceAll("[aeiou]","");

System.out.println(newstr);

但是总是被空格键挡住,举个例子,输入“java is funny”,然后得出的结果是“jv”,但是我预期的效果应该是“jv s fnny”,保留住空格,而且还要继续删除空格键后面出现的元音字母,那我应该要怎么改代码?

还有个问题,当前后出现一样的字母时,只保留单个字母,举个例子,输入“nn”,得出结果“n”,我试了以下代码:

if(str.charAt(i)==str.charAt(i+1)){
 newstr=str.repalce(str.charAt(i),"");}

但是不能运行,不知道问题出在哪,应该用什么方法?

请大家帮忙~

最佳答案

第一个问题我做了测试 并不会被空格挡住


第二个问题在于你没有理解String是不可变的


调用任何String的方法并不会改变String的字符串内容(除了=运算符)


因此不管循环几次 str 还是原来的 str


所有的替换都是在同一个str的基础上进行的


因此每次得到的newstr都是毫不相干的对象


而replace方法会替换所有的相同的char而不是替换一个


方法签名是String replace(char,char) 你连调用都错了


具体的做法是


str = "aabcdnnnn";
  newstr ="";
  int i = 0;
  for (; i < str.length()-1; i++) { 
   if(str.charAt(i)!=str.charAt(i+1))
    newstr+=str.charAt(i);
  }
  newstr+=str.charAt(i);
  System.out.println(newstr);

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
不想用360系列
寻仙怎么做视频
怎样解压发送来的照片
石鼓区Apple授权经销商(苏宁衡阳解放路店)这
是不是一定要变得有心计才可以在社会立足!
跪求藏地密码7 8 9 10TXT版本
QQ飞车说我在清凉酷饮中奖了,怎样领奖
体育生会胖吗
夏普SH9230c里的音乐是用什么格式的?
现在换季了吗?
我怎样才能改掉密码 能帮我吗
求能看小说的网址?
高考体育拿到专业分90有多难
帮我介绍个好玩的游戏……
泌阳县京东物流驻马店泌阳站地址有谁知道?有
推荐资讯
江夏区武汉华炫影视(锦绣山庄)儿童电视剧拍摄
伍家岗区宜昌傻子瓜子这个地址在什么地方,我
怎么样才是真正爱你的?
A变速器用不了怎么办?
请问什么是爱(男女的)
香坊区哈尔滨奥林文化学校地址在哪里啊
都说孕妇的床不能乱动乱搬?这是迷信的说法吗
QQ堂有6倍打法
求《百鬼夜行绘卷》的所有鬼的图文介绍
牛的重量是狗的39倍,一共重280千克,各重多
车辆违章但是没有写违章原因
谁给个七龙珠猛烈冲击2下载地址
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?