替换除了收尾的连续*后的所有其它*

本文介绍了一种使用Java处理字符串中特定字符的方法,通过双指针技术定位并移除指定字符,同时提供了一种利用正则表达式的替代方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:两个指针,分别找到前面第一个不为*的位置和最后连续*开始的地方。
然后在遍历一遍。下面两种方法都不是最优的,只是个人为了测试写的。
更好的方法是得到了两个位置,直接从头到尾在遍历一遍数组就ok。

public static void main(String args[])
Scanner in=new Scanner(System.in);
String input=in.nextLine();
System.out.println(input.substring(0,input.length()));
String result;
int length=input.length();
if(length<=0) return;
int start=0;
int end=length-1;
String pre=”“;
String post=”“;
String str=”“;
System.out.println(“end:”+end);
while(input.charAt(start)==’*’) start++ ;
while(input.charAt(end)==’*’) end–;
System.out.println(start+”“+end);
if(start>end) result=input;
else if(start==0){pre=”“;}
else {pre=input.substring(0,start–);}
if(end==length-1){post=”“;}
else {
post=input.substring(end++, length–);
}
str=input.substring(start, end+1).replace(“*”, “”);

        result=pre+str+post;

    System.out.println("result:"+result);
}
*/

/* //正则表达式实现方法
public static void main(String args[]){
Scanner in=new Scanner(System.in);
String input=in.next();
if(input==null) return ;
Pattern r = Pattern.compile(“(\**)([^].[^])(\*)”);

      Matcher ma = r.matcher(input);
      ma.matches();
      String group1=ma.group(1);
      String group2=ma.group(2);
      String group3=ma.group(3);
      String mid=group2.replaceAll("\\**", "");
      String result=new StringBuilder(group1).append(mid).append(group3).toString();
      System.out.print(result);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值