Em Java, eu tenho uma String:
Jamaica
Gostaria de remover o primeiro caractere da string e retornar amaica
Como eu faria isso?
Em Java, eu tenho uma String:
Jamaica
Gostaria de remover o primeiro caractere da string e retornar amaica
Como eu faria isso?
Respostas:
Use a substring()
função com um argumento de 1
para obter a substring da posição 1 ( após o primeiro caractere) até o final da string (deixando o segundo argumento fora do padrão para o comprimento total da string).
"Jamaica".substring(1);
public String removeFirstChar(String s){
return s.substring(1);
}
removeFirst()
.
Use substring()
e forneça o número de caracteres que deseja aparar da frente.
String value = "Jamaica";
value = value.substring(1);
Resposta: "amaica"
Use o operador ternário Java para verificar rapidamente se seu personagem está lá antes de removê-lo. Isso remove o caractere à esquerda somente se ele existir, se for passado uma string em branco, retorne a string em branco.
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);
Impressões:
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);
}
O principal a entender em Java é que as Strings são imutáveis - você não pode alterá-las. Portanto, não faz sentido falar em 'remover um caractere de uma string'. Em vez disso, você cria uma NOVA string com apenas os caracteres que deseja. As outras postagens nesta pergunta oferecem várias maneiras de fazer isso, mas é importante entender que elas não alteram a string original de forma alguma. Todas as referências que você possui à cadeia antiga continuarão a se referir à cadeia antiga (a menos que você as altere para se referir a uma cadeia diferente) e não serão afetadas pela cadeia recém-criada.
Isso tem várias implicações para o desempenho. Cada vez que você está 'modificando' uma string, na verdade você está criando uma nova string com toda a sobrecarga implícita (alocação de memória e coleta de lixo). Portanto, se você desejar fazer uma série de modificações em uma string e se importar apenas com o resultado final (as strings intermediárias estarão inoperantes assim que você as "modificar"), poderá fazer mais sentido usar um StringBuilder ou StringBuffer.
O método substring () retorna uma nova String que contém uma subsequência de caracteres atualmente contidos nessa sequência.
A substring começa no especificado start
e se estende ao caractere em index end - 1
.
Tem duas formas. O primeiro é
String substring(int FirstIndex)
Aqui, FirstIndex especifica o índice no qual a substring começará. Este formulário retorna uma cópia da substring que começa em FirstIndex e é executada no final da cadeia de chamada.
String substring(int FirstIndex, int endIndex)
Aqui, FirstIndex especifica o índice inicial e endIndex especifica o ponto de parada. A cadeia retornada contém todos os caracteres do índice inicial, até, mas não incluindo, o índice final.
String str="Amiyo";
// prints substring from index 3
System.out.println("substring is = " + str.substring(3)); // Output "yo'
Me deparei com uma situação em que eu tinha que remover não apenas o primeiro caractere (se fosse um #
, mas o primeiro conjunto de caracteres).
String myString = ###Hello World
poderia ser o ponto de partida, mas eu só gostaria de manter o Hello World
. isso pode ser feito da seguinte maneira.
while (myString.charAt(0) == '#') { // Remove all the # chars in front of the real string
myString = myString.substring(1, myString.length());
}
No caso do OP, substitua while
por if
e ele também funciona.
Outra solução, você pode resolver seu problema usando replaceAll
algum regex ^.{1}
( regex demo ), por exemplo:
String str = "Jamaica";
int nbr = 1;
str = str.replaceAll("^.{" + nbr + "}", "");//Output = amaica
Minha versão da remoção de caracteres principais, um ou vários. Por exemplo, String str1 = "01234", ao remover o '0' inicial, o resultado será "1234". Para uma string str2 = "000123", o resultado será novamente "123". E para String str3 = "000" o resultado será string vazia: "". Essa funcionalidade geralmente é útil ao converter seqüências numéricas em números.A vantagem dessa solução em comparação com o regex (replaceAll (...)) é que este é muito mais rápido. Isso é importante ao processar um grande número de Strings.
public static String removeLeadingChar(String str, char ch) {
int idx = 0;
while ((idx < str.length()) && (str.charAt(idx) == ch))
idx++;
return str.substring(idx);
}