web-dev-qa-db-ja.com

Java - 文字列の最初の文字を削除する

Javaでは、私は文字列を持っている:

Jamaica

文字列の最初の文字を削除してからamaicaを返します

どのようにこれをしますか?

188
Calibre2010

位置1から部分文字列を取得するには、 substring() 関数を引数1と共に使用します(after最初の文字(文字列の最後まで)(2番目の引数をデフォルトのままにしておくと、デフォルトで文字列の全長になります)。

"Jamaica".substring(1);
299
marcog
public String removeFirstChar(String s){
   return s.substring(1);
}
59
Ahmed Kotb

substring()を使用して、正面から切り取る文字数を指定します。

String value = "Jamaica";
value = value.substring(1);

回答:「アマイカ」

Javaでは、特定の文字である場合にのみ先頭の文字を削除します

削除する前に、Javaの3項演算子を使用して、自分のキャラクタが存在するかどうかをすばやく確認します。空白文字列が渡された場合は、空白文字列を返します。

String header = "";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

header = "foobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

header = "#moobar";
header = header.startsWith("#") ? header.substring(1) : header;
System.out.println(header);

プリント:

blankstring
foobar
moobar

Javaでは、文字列内の任意の場所にある文字のすべてのインスタンスを削除します。

String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"

Javaでは、文字列内の任意の場所にある文字の最初のインスタンスを削除します。

String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"
46
Eric Leschinski

先頭のインデックスだけを取り、指定されたインデックスの文字で始まり次の文字列まで続くサブストリングを返すStringクラスの substring メソッドを使用できます。文字列の末尾.

String str = "Jamaica";
str = str.substring(1);
17
codaddict

Javaで理解すべき重要なことは、文字列は不変であるということです - あなたはそれらを変更することはできません。したがって、「文字列から文字を削除する」と言っても意味がありません。代わりに、必要な文字だけで新しい文字列を作ります。この質問の他の記事では、それを行うためのさまざまな方法を説明していますが、これらが元の文字列をまったく変更しないことを理解することは重要です。古い文字列への参照は、古い文字列を参照し続け(別の文字列を参照するように変更しない限り)、新しく作成された文字列の影響を受けません。

これはパフォーマンスに多くの影響を及ぼします。文字列を「修正」するたびに、実際には、すべてのオーバーヘッドが暗示された状態で新しい文字列が作成されます(メモリ割り当てとガベージコレクション)。そのため、文字列に一連の変更を加え、最終結果だけを気にしたい場合(中間の文字列は「変更」するとすぐに無効になります)、代わりにStringBuilderまたはStringBufferを使用する方が合理的です。

11
Chris Dodd
public String removeFirst(String input)
{
    return input.substring(1);
}
9
Reese Moore

あなたはこのようにすることができます:

String str="Jamaica";
str=str.substring(1, title.length());
return str;

または一般的に:

public String removeFirstChar(String str){
   return str.substring(1, title.length());
}
9
eli am

substring()メソッドは、サブシーケンス現在の文字数を含む新しいStringを返します。このシーケンスに含まれています。

サブストリングは、指定されたstartから始まり、index end - 1の文字まで続きます。

2つの形式があります。最初は

  1. String substring(int FirstIndex)

ここで、FirstIndexは部分文字列が始まるインデックスを指定します。このフォームは、FirstIndexで始まり、呼び出し元の文字列の末尾まで続く部分文字列のコピーを返します。

  1. String substring(int FirstIndex, int endIndex)

ここで、FirstIndexは開始インデックスを指定し、endIndexは停止ポイントを指定します。返される文字列には、先頭のインデックスから末尾のインデックスまでのすべての文字が含まれます。

    String str="Amiyo";
   // prints substring from index 3
   System.out.println("substring is = " + str.substring(3)); // Output "yo'
8
IntelliJ Amiya

最初の文字だけでなく(#であれば最初の文字のセットも)削除しなければならない状況に出くわしました。

String myString = ###Hello Worldが出発点になるかもしれませんが、私はHello Worldだけを残したいです。これは以下のようにすることができます。

while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
    myString = myString.substring(1, myString.length());
}

OPの場合は、whileifに置き換えれば同様に機能します。

4

別の解決策として、いくつかの正規表現^.{1}regex demo )を付けたreplaceAllを使用して問題を解決できます。

String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
2
YCF_L

先頭の文字を削除する私のバージョン、1つまたは複数。たとえば、String str1 = "01234"の場合、先頭の '0'を削除すると、結果は "1234"になります。文字列str2 = "000123"の場合、結果は再び "123"になります。そして、文字列str3 = "000"の場合、結果は空の文字列になります: ""。このような機能は、数値文字列を数値に変換するときに便利です。regex(replaceAll(...))と比較したこのソリューションの利点は、これがはるかに高速であることです。これは、多数の文字列を処理するときに重要です。

 public static String removeLeadingChar(String str, char ch) {
    int idx = 0;
    while ((idx < str.length()) && (str.charAt(idx) == ch))
        idx++;
    return str.substring(idx);
}