150

Java で文字列の個々の文字にアクセスするには、String.charAt(2). javaで文字列の個々の文字を削除する組み込み関数はありますか?

このようなもの:

if(String.charAt(1) == String.charAt(2){
   //I want to remove the individual character at index 2. 
}
4

24 に答える 24

266

StringBuilder変更可能なクラスを使用することもできます。

StringBuilder sb = new StringBuilder(inputString);

methoddeleteCharAt()と、他の多くのミューテーター メソッドがあります。

削除する必要がある文字を削除するだけで、次のように結果が得られます。

String resultString = sb.toString();

これにより、不要な文字列オブジェクトの作成が回避されます。

于 2012-11-14T19:54:38.923 に答える
94

replace と呼ばれる Java String メソッドを使用できます。これは、最初のパラメーターに一致するすべての文字を 2 番目のパラメーターに置き換えます。

String a = "Cool";
a = a.replace("o","");
于 2013-12-18T18:00:26.050 に答える
84

1 つの可能性:

String result = str.substring(0, index) + str.substring(index+1);

Java の String は不変であるため、結果は新しい String (および 2 つの中間 String オブジェクト) であることに注意してください。

于 2012-11-14T19:44:42.243 に答える
17
String str = "M1y java8 Progr5am";

deleteCharAt()

StringBuilder build = new StringBuilder(str);
System.out.println("Pre Builder : " + build);
    build.deleteCharAt(1);  // Shift the positions front.
    build.deleteCharAt(8-1);
    build.deleteCharAt(15-2);
System.out.println("Post Builder : " + build);

交換()

StringBuffer buffer = new StringBuffer(str);
    buffer.replace(1, 2, ""); // Shift the positions front.
    buffer.replace(7, 8, "");
    buffer.replace(13, 14, "");
System.out.println("Buffer : "+buffer);

文字[]

char[] c = str.toCharArray();
String new_Str = "";
    for (int i = 0; i < c.length; i++) {
        if (!(i == 1 || i == 8 || i == 15)) 
            new_Str += c[i];
    }
System.out.println("Char Array : "+new_Str);
于 2015-09-24T09:31:36.550 に答える
16

いいえ、Java の文字列は不変であるためです。不要な文字を削除して新しい文字列を作成する必要があります。

stringのcインデックス位置にある単一の char を置き換えるには、次のようにします。新しい文字列が作成されることに注意してください。idxstr

String newstr = str.substring(0, idx) + str.substring(idx + 1);
于 2012-11-14T19:43:54.430 に答える
3

replace メソッドを使用すると、文字列の 1 文字を変更できます。

string= string.replace("*", "");
于 2014-11-01T11:11:31.533 に答える
1

文字の削除を論理的に制御する必要がある場合は、これを使用してください

String string = "sdsdsd";
char[] arr = string.toCharArray();
// Run loop or whatever you need
String ss = new String(arr);

そのような制御が必要ない場合は、Oscar または Bhesh が言及したものを使用できます。彼らはスポットです。

于 2012-11-14T20:15:08.030 に答える
1
public class RemoveCharFromString {
    public static void main(String[] args) {
        String output = remove("Hello", 'l');
        System.out.println(output);
    }

    private static String remove(String input, char c) {

        if (input == null || input.length() <= 1)
            return input;
        char[] inputArray = input.toCharArray();
        char[] outputArray = new char[inputArray.length];
        int outputArrayIndex = 0;
        for (int i = 0; i < inputArray.length; i++) {
            char p = inputArray[i];
            if (p != c) {
                outputArray[outputArrayIndex] = p;
                outputArrayIndex++;
            }

        }
        return new String(outputArray, 0, outputArrayIndex);

    }
}
于 2016-03-19T02:05:58.643 に答える
1

文字列から文字を削除する最も簡単な方法

String str="welcome";
str=str.replaceFirst(String.valueOf(str.charAt(2)),"");//'l' will replace with "" 
System.out.println(str);//output: wecome
于 2015-08-08T19:27:54.467 に答える
1

String クラスの replaceFirst 関数を使用します。使用できる置換関数には非常に多くのバリエーションがあります。

于 2012-11-14T19:44:40.143 に答える
0
           BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
   String line1=input.readLine();
   String line2=input.readLine();
         char[]  a=line2.toCharArray();
          char[] b=line1.toCharArray();
           loop: for(int t=0;t<a.length;t++) {

            char a1=a[t];
           for(int t1=0;t1<b.length;t1++) {
               char b1=b[t1];  
               if(a1==b1) {
                   StringBuilder sb = new StringBuilder(line1);
                   sb.deleteCharAt(t1);
                   line1=sb.toString();
                   b=line1.toCharArray();
                   list.add(a1);
                   continue  loop;   
               }


            }
于 2016-09-19T06:08:03.890 に答える
0
public static String removechar(String fromString, Character character) {
    int indexOf = fromString.indexOf(character);
    if(indexOf==-1) 
        return fromString;
    String front = fromString.substring(0, indexOf);
    String back = fromString.substring(indexOf+1, fromString.length());
    return front+back;
}
于 2015-10-18T01:38:36.350 に答える
-2

For example if you want to calculate how many a's are there in the String, you can do it like this:

if (string.contains("a"))
{
    numberOf_a++;
    string = string.replaceFirst("a", "");
}
于 2013-10-17T23:02:57.150 に答える