Java, bir dize var:
Jamaica
Dizenin ilk karakterini kaldırmak ve sonra geri dönmek istiyorum amaica
Bunu nasıl yaparım?
Java, bir dize var:
Jamaica
Dizenin ilk karakterini kaldırmak ve sonra geri dönmek istiyorum amaica
Bunu nasıl yaparım?
Yanıtlar:
Alt dizeyi konum 1'den ( ilk karakterden sonra ) dizenin sonuna (ikinci bağımsız değişkeni varsayılan olarak dizenin tam uzunluğuna bırakarak) almak için substring()
işlevini bağımsız değişkeniyle kullanın .1
"Jamaica".substring(1);
public String removeFirstChar(String s){
return s.substring(1);
}
removeFirst()
.
substring()
Önden kırpmak istediğiniz karakter sayısını kullanın ve verin.
String value = "Jamaica";
value = value.substring(1);
Cevap: "amaica"
Java üçlü operatörünü kullanarak karakterinizi kaldırmadan önce orada olup olmadığını hızlıca kontrol edin. Bu, öndeki karakteri yalnızca varsa boş bir dize geçirilirse boş dizge döndürür.
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);
Baskılar:
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"
header = header.substring(header.startsWith("#") ? 1 : 0);
header = header.replaceFirst("^#","");
public String removeFirst(String input)
{
return input.substring(1);
}
Java'da anlaşılması gereken en önemli şey, Dizelerin değişmez olmasıdır - bunları değiştiremezsiniz. Dolayısıyla 'bir karakter dizgiden çıkarılmasından' bahsetmek hiç mantıklı değil. Bunun yerine, yalnızca istediğiniz karakterlerle YENİ bir dize oluşturursunuz. Bu sorudaki diğer gönderiler size bunu yapmanın çeşitli yollarını sunar, ancak bunların orijinal dizeyi hiçbir şekilde değiştirmediğini anlamak önemlidir. Eski dizeye ilişkin başvurular, eski dizeye başvurmaya devam eder (bunları farklı bir dizeye başvurmak için değiştirmediğiniz sürece) ve yeni oluşturulan dizeden etkilenmez.
Bunun performans için bir takım etkileri vardır. Bir dizeyi her 'değiştirdiğinizde', aslında tüm ek yükü (bellek ayırma ve çöp toplama) içeren yeni bir dize oluşturuyorsunuz. Bu nedenle, bir dizede bir dizi değişiklik yapmak ve yalnızca nihai sonuca dikkat etmek istiyorsanız (ara dizeler, onları 'değiştirir değiştirmez' ölür), bunun yerine bir StringBuilder veya StringBuffer kullanmak daha mantıklı olabilir.
substring () yöntemi, şu anda bu sırada bulunan karakterlerinbir alt dizisini içeren yeni bir Dize döndürür.
Alt dize belirtilende başlar start
ve konumundaki karaktere uzanır index end - 1
.
İki şekli vardır. İlk olarak
String substring(int FirstIndex)
Burada, FirstIndex alt dizenin başlayacağı dizini belirtir. Bu form, FirstIndex ile başlayan ve çağıran dizenin sonuna kadar çalışan alt dizenin bir kopyasını döndürür.
String substring(int FirstIndex, int endIndex)
Burada, FirstIndex başlangıç dizinini belirtir ve endIndex ise durma noktasını belirtir. Döndürülen dize, başlangıç dizininden bitiş dizinine kadar olan, ancak bitiş dizinini içermeyen tüm karakterleri içerir.
String str="Amiyo";
// prints substring from index 3
System.out.println("substring is = " + str.substring(3)); // Output "yo'
Sadece ilk karakteri değil, ilk karakter #
grubunu da kaldırmak zorunda kaldığım bir durumla karşılaştım .
String myString = ###Hello World
başlangıç noktası olabilir, ama ben sadece tutmak istiyorum Hello World
. bu aşağıdaki gibi yapılabilir.
while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
myString = myString.substring(1, myString.length());
}
OP'ın durumda, yerini while
ile if
ve aswell çalışır.
Başka bir çözüm, örneğin replaceAll
bazı regex ^.{1}
( regex demo ) kullanarak sorununuzu çözebilirsiniz :
String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
Bir veya daha fazla önde gelen karakterleri kaldırma sürümüm. Örneğin, string1 = "01234", önde gelen '0' kaldırılırken sonuç "1234" olur. Bir String için str2 = "000123" sonucu tekrar "123" olur. Ve String str3 = "000" için sonuç boş string olacaktır: "". Bu tür işlevsellik, sayısal dizeleri sayılara dönüştürürken genellikle kullanışlıdır. Çok sayıda Dizeyi işlerken bu önemlidir.
public static String removeLeadingChar(String str, char ch) {
int idx = 0;
while ((idx < str.length()) && (str.charAt(idx) == ch))
idx++;
return str.substring(idx);
}