我需要使用java编程删除特定字符前后的所有字符 例如:
输入 ab*cd
输出 ad
输入 ab**cd
输出 ad
import java.util.Scanner;
public class Starstring {
public static void main(String[] args) {
String str1;
String res="";
int n,i=0;
Scanner sc=new Scanner(System.in);
System.out.println("Enter the string");
str1=sc.next();
res=str1;
StringBuffer a = new StringBuffer(str1);
n=str1.length()-1;
for(i=0;i<n;i++)
{
if(str1.charAt(i)=='*')
{
res=a.delete(i-1, i+2).toString();
}
}
System.out.println("The final string is"+res);
}
}
我得到case 1
的预期输出,但是case 2
错误的输出以ac作为输出。我不知道我哪里出错了。有人请帮帮我。谢谢你提前:)
答案 0 :(得分:0)
您可以使用正则表达式替换字符串中的字符组。在&amp;之前删除*
和1个字符在它之后:
Pattern pt = Pattern.compile(".\\*+.");
Matcher match = pt.matcher(input);
String output = match.replaceAll("");
//System.out.println(output);
答案 1 :(得分:0)
使用正则表达式将多个*
替换为单个*
。您的代码如下所示:
input:ab*cd output:ad
input ab**cd ouput:ad
import java.util.Scanner;
public class Starstring {
public static void main(String[] args) {
String str1;
String res="";
int n,i=0;
Scanner sc=new Scanner(System.in);
System.out.println("Enter the string");
str1=sc.next();
res=str1;
str1 = str1.replaceAll("[*]+", "*");// add this line
StringBuffer a = new StringBuffer(str1);
n=str1.length()-1;
for(i=0;i<n;i++)
{
if(str1.charAt(i)=='*')
{
res=a.delete(i-1, i+2).toString();
}
}
System.out.println("The final string is"+res);
}
}
答案 2 :(得分:0)
你可以这样做:
String str1;
int n;
Scanner sc=new Scanner(System.in);
System.out.println("Enter the string");
str1=sc.next();
sc.close();
StringBuffer a = new StringBuffer(str1);
n=a.length();
for(int i=0;i<n;i++)
{
if(str1.charAt(i)=='*')
{
int aa = i-1;
int bb = i+1;
for(;bb<n; bb++){
if(str1.charAt(bb)!='*'){
break;
}
}
a.delete( aa, bb+1 );
i = bb;
}
}
String res = a.toString();
System.out.println("The final string is"+res);
但更好的java 正则表达式 方式是:
从扫描仪读取值后 -
String res2 = str1.replaceAll( ".[\\*]+.", "" );
System.out.println("The final string is"+res2);
答案 3 :(得分:0)
使用@Vasan正则表达式..下面是代码。
public static void main(String[] args) {
String str1;
String res="";
int n;
Scanner sc=new Scanner(System.in);
System.out.println("Enter the string");
str1=sc.next();
res=str1;
StringBuffer a = new StringBuffer(str1);
n=str1.length()-1;
String[] splitVal = str1.split(".\\*+.");
String newString ="";
for(int i=0; i<splitVal.length; i++){
newString = newString + splitVal[i];
}
System.out.println("The final string is "+newString);
}
希望你明白。
答案 4 :(得分:0)
试试这个:
public static void main(String[] args) {
System.out.println("Enter the string");
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
String[] separated = str1.split(".\\*+.");
String result = "";
for(String str : separated) {
result += str;
}
System.out.println(result);
}
答案 5 :(得分:0)
如果输入为:* abc *或ab * c * de