Javaでは、私は文字列を持っている:
Jamaica
文字列の最初の文字を削除してからamaica
を返します
どのようにこれをしますか?
位置1から部分文字列を取得するには、 substring()
関数を引数1
と共に使用します(after最初の文字(文字列の最後まで)(2番目の引数をデフォルトのままにしておくと、デフォルトで文字列の全長になります)。
"Jamaica".substring(1);
public String removeFirstChar(String s){
return s.substring(1);
}
substring()
を使用して、正面から切り取る文字数を指定します。
String value = "Jamaica";
value = value.substring(1);
回答:「アマイカ」
削除する前に、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
String a = "Cool";
a = a.replace("o","");
//variable 'a' contains the string "Cl"
String b = "Cool";
b = b.replaceFirst("o","");
//variable 'b' contains the string "Col"
先頭のインデックスだけを取り、指定されたインデックスの文字で始まり次の文字列まで続くサブストリングを返すString
クラスの substring メソッドを使用できます。文字列の末尾.
String str = "Jamaica";
str = str.substring(1);
Javaで理解すべき重要なことは、文字列は不変であるということです - あなたはそれらを変更することはできません。したがって、「文字列から文字を削除する」と言っても意味がありません。代わりに、必要な文字だけで新しい文字列を作ります。この質問の他の記事では、それを行うためのさまざまな方法を説明していますが、これらが元の文字列をまったく変更しないことを理解することは重要です。古い文字列への参照は、古い文字列を参照し続け(別の文字列を参照するように変更しない限り)、新しく作成された文字列の影響を受けません。
これはパフォーマンスに多くの影響を及ぼします。文字列を「修正」するたびに、実際には、すべてのオーバーヘッドが暗示された状態で新しい文字列が作成されます(メモリ割り当てとガベージコレクション)。そのため、文字列に一連の変更を加え、最終結果だけを気にしたい場合(中間の文字列は「変更」するとすぐに無効になります)、代わりにStringBuilderまたはStringBufferを使用する方が合理的です。
public String removeFirst(String input)
{
return input.substring(1);
}
あなたはこのようにすることができます:
String str="Jamaica";
str=str.substring(1, title.length());
return str;
public String removeFirstChar(String str){
return str.substring(1, title.length());
}
substring()メソッドは、サブシーケンス現在の文字数を含む新しいStringを返します。このシーケンスに含まれています。
サブストリングは、指定されたstart
から始まり、index end - 1
の文字まで続きます。
2つの形式があります。最初は
String substring(int FirstIndex)
ここで、FirstIndexは部分文字列が始まるインデックスを指定します。このフォームは、FirstIndexで始まり、呼び出し元の文字列の末尾まで続く部分文字列のコピーを返します。
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'
最初の文字だけでなく(#
であれば最初の文字のセットも)削除しなければならない状況に出くわしました。
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の場合は、while
をif
に置き換えれば同様に機能します。
別の解決策として、いくつかの正規表現^.{1}
( regex demo )を付けたreplaceAll
を使用して問題を解決できます。
String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
先頭の文字を削除する私のバージョン、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);
}