Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中提高从字符串中删除字符的效率_Java_String - Fatal编程技术网

在java中提高从字符串中删除字符的效率

在java中提高从字符串中删除字符的效率,java,string,Java,String,-->如何在以下代码中提高“从字符串中删除字符的效率”: import java.util.Scanner; public class StringPractice { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("Enter a String : "); String str; str=sc.nextLine();

-->如何在以下代码中提高“从字符串中删除字符的效率”:

import java.util.Scanner;

public class StringPractice {

public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    System.out.println("Enter a String : ");
    String str;
    str=sc.nextLine();
    System.out.println("Enter char to remove : ");
    char ch=sc.nextLine().charAt(0);

    char[] a=new char[str.length()];
//  System.out.println("Parameters : Char : "+ch+"  String : "+str+"\n");

    StringPractice ob=new StringPractice();
    a=ob.removeChar(str,ch);
    String str1=new String(a);
    System.out.println("New String is : "+str1);
}
char[] removeChar(String a,char c){
    char[] ch=new char[a.length()];
    byte count=0;
    for(int i=0;i<a.length();i++){
        if(a.charAt(i)==c){
            count++; 
            continue;
        }
         ch[i-count]=a.charAt(i);
    }

    return ch; 
}
}
import java.util.Scanner;
公开课实习{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
System.out.println(“输入字符串:”);
字符串str;
str=sc.nextLine();
System.out.println(“输入要删除的字符:”);
char ch=sc.nextLine().charAt(0);
char[]a=新字符[str.length()];
//System.out.println(“参数:Char:+ch+”字符串:+str+”\n”);
StringPractice ob=新StringPractice();
a=ob.removeChar(str,ch);
字符串str1=新字符串(a);
System.out.println(“新字符串为:“+str1”);
}
char[]removeChar(字符串a,字符c){
char[]ch=新字符[a.长度()];
字节计数=0;

对于(inti=0;i,还可以使用可变的StringBuilder类

StringBuilder sb=新的StringBuilder(inputString)

公共类重新投资{
公共静态void main(字符串参数[]){
StringBuilder名称=新StringBuilder(“chandu”);
int i=name.indexOf(“n”);
名称.删除字符(i);
System.out.println(name.toString());

}
据我所知,您正在编写代码,以删除sting中出现的字符,因此只需将其替换为空字符串即可: 只需更改此代码,无需removeChar方法:

StringPractice ob=new StringPractice();
        a=ob.removeChar(str,ch);
        String str1=new String(a);
索尔:

要替换所有事件,请执行以下操作:

 str = str.replaceAll("ch","");

内置字符串函数
replaceAll()
删除所有出现的字符串,以及
replace()
删除单个字符

 string = string.replaceAll("c","");
 string = string.replace("c","");

对我来说,它似乎是相当优化的代码。它应该比标准方法更快。这是你程序中的一个热点吗?预热代码,如果你先编译代码,它可以在不改变它的情况下运行50多次。你有一个bug,
char[]如果从中删除字符,ch将不会变小。我将首先考虑正确性,其次考虑速度。我将删除
char[]a=new char[str.length()]
因为您不使用对象。是的,olsai,我正在寻找其他更好的解决方案该字符可能会出现多次。是的,正是我所想的。我不确定为新字符串中的字符指定的索引。此外,如果字符串中出现多次,我们仍然需要有一个循环。例如,如果我们想重新将“e”从大象身上移开。
 string = string.replaceAll("c","");
 string = string.replace("c","");