Extraer una parte de una cadena

28/May/2010 Java , 48 Comentarios
Programación en Java

Una consa muy sencilla de hacer con Java y que la utilizaremos en muchos ejemplo es la de extraer una parte de una cadena. Para poder llevar a cabo este procedimiento nos basaremos en el método substring() de Java. Dicho método lo encontraremos en la clase String.

Aunque el método substring() puede ser invocado de diferentes formas, nosotros nos basaremos en la siguiente:

public String substring(int beginIndex, int endIndex)

Los parámetros que le pasamos indican el indice inicial y final de la cadena que queramos extraer. El inicial corresponde con la posición de la letra por la que queremos empezar y el final por la letra que está justo después de la última letra que queramos recuperar.

Una cosa muy importante es que la primera letra de una cadena de texto siempre tiene el índice 0.

Estas serían las posiciones de la frase «Hola Mundo».

H o l a   M u n d o
0 1 2 3 4 5 6 7 8 9

Así que si queremos extraer la parte «Mundo» de la cadena «Hola Mundo». El código substring() a utilizar será el siguiente:

String sCadena = "Hola Mundo";
String sSubCadena = sCadena.substring(5,10);
System.out.println(sSubCadena);

Algo sencillo y útil.

Podéis consultar más sobre el método substring() en http://www.w3api.com/wiki/Java:String.substring()

Vídeos sobre Java Básico


48 comentarios en “Extraer una parte de una cadena”

Víctor Cuervo

Cristian

Hola buenas, necesitaba ayuda con un ejercicio. Se trata de introducir un nombre por teclado y devolverlo en formato apellido.

por ejemplo, si introduces Pablo Arias, que devuelva Arias, P.

Víctor Cuervo

Carlos A Dominguez Diaz

String[] Fecha = tustring.split(«-«);

Víctor Cuervo

David

yo te ayudo, lo hice hace 3 dias esa cosa, alguien tambien me lo pidio

Víctor Cuervo

jp

Hola soy novato por aqui, quisiera obtener de un string por ejemplo 125-2500 ,poder separar por el guion y obvio poder elegir cual usar. gracias!

Víctor Cuervo

Steven Cruz

Alguien que me ayude a Realizar un programa con un menú que pida al usuario que opción desea realizar

a. Calcular la raíz de un número.
b. Imprimir si un número es positivo o negativo o cero.
c. Salir.

Víctor Cuervo

AMNER

AYUDA
PREGUNTA Nª 4:

Un programa que pida al usuario una frase y la descomponga en Sub-cadenas separadas
por espacios, usando "Split". Luego debe mostrar cada Sub-cadena en una línea nueva,
usando "foreach".

PREGUNTA Nª 5:

Un programa que pida al usuario varios números separados por espacios y muestre su
sum, utilizando, pero empleando "foreach", “for” ó “while”.

Víctor Cuervo

Víctor Cuervo

Buenas Amner,

Lo tienes resuelto en http://lineadecodigo.com/java/extraer-contenido-con-delimitadores-dinamicos/ en ese caso es con almohadillas (#). Es tan sencillo que cambies las almohadillas por espacios en blanco.

Saludos.

Víctor Cuervo

P.Arza

por favor quisiera ayuda con el codigo para que en la pantalla salga:
BIENVENIDOS
IENVENIDOSB
ENVENIDOSBI
.
.
.
SBIENVENIDO

pero que la palabra no sea bienvenidos sino elegido por la persona.
GRACIASSSSS

Víctor Cuervo

Víctor Cuervo

Buenas P.Arza,

Lo tienes resuelto en http://lineadecodigo.com/java/invertir-una-cadena-con-java/ Espero que te sirva de ayuda.

Saludos.

Víctor Cuervo

Wilder

Buenas, me pregunto como hago para separar la cadena desde la ultima posición?
Necesito separar la cadena de 4 digitos en 4 a partir de la ultima posición, intenté con este comando pero no funciona
String Scadena;
Scadena = x.substring(x.length(),x.length()-4);

Víctor Cuervo

JUAN MARCOS ANTONACCIO CAORSI

Hola el siguiente codigo haria eso dada cierta cadena empieza a extraer de 4 elementos.
Saludos
Juan

public class Cadena {

	public static void main(String[] args) {
		String cad ="InicPesa0123Peso0123Peso";
		String aux="";
		
		for(int i=cad.length()-1 ; i>0 ; i=i-4){
			aux=cad.substring(i-3, i+1);
			System.out.println(aux);
		    System.out.println(i);
		}
		
		

	}

}
Víctor Cuervo

Daniel

Hola necesito ayuda con este ejercicio:
Se pide escribir un método que toma cadenas de longitud par y devuelve una cadena nueva, cuyas mitades han sido invertidas.
String invertirMitades (String s)
Por ejemplo: Si la función recibe «perros» devuelve «repsor». Si recibe «cocodrilos» devuelve «dococsolir» Si recibe «arbolito» devuelve»obraotil» Si recibe «salada» devuelve «lasada»
Hasta Hora lo único que me sale hacer es invertir la palabra cuando la cadena que recibe es de longitud par. pero no se como dividir la palabra a la mitad


 public class PracticaAparte {
    public static void main(String[]args){

       PracticaAparte p1 = new PracticaAparte();
         p1.invertirMitades("camp");
}
String invertirMitades(String s){
        String reves = "";
        if (s.length()%2==0) {
             for (int i=s.length()-1; i >= 0; i--) {
              reves = reves + s.charAt(i); 
                 
            }
              System.out.println(reves);
        }else{
                    System.out.println("La cadena es un número impar");
                    }
        return reves;
    }
}

Muchas Gracias!!!

Víctor Cuervo

Víctor Cuervo

Buenas,

Puedes invertir de 0 hasta .length/2 y de (length/2 hasta el final. Te pego el código..

public class Main {
    
    
    public static String reverse(String s) {
        return new StringBuilder(s).reverse().toString();
    }
    
    public static void main(String[] args) throws Exception {
        // Your code here!
        
        //String sCadena = "Perros";
        String sCadena = "cocodrilos";
        System.out.print(reverse(sCadena.substring(0,sCadena.length()/2)));
        System.out.print(reverse(sCadena.substring((sCadena.length()/2))));
        
    }
}

A ver si te sirve.

Víctor Cuervo

blanca suarez

buenas tardes necesito que por favor me ayuden con este ejercicio: Salen cinco personas a comer. La cuenta total del consumo es de 50 dólares, pero a eso debes agregarle el 10% de Impuesto al Valor Agregado (IVA). Quieres dividir la cuenta equitativamente entre ellos.

Víctor Cuervo

Miguel

Hola, necesito saber cómo hago para crear una palabra y que ésta se imprima junto con un código de letras por ejemplo …. por favor

Víctor Cuervo

lex

como manejo split cuando quiero vaciar una cadena insertada por teclado, a una matriz?

 

Víctor Cuervo

Víctor Cuervo

¿Qué quieres decir con «manejar split»? Quieres hacer un split a la cadena y que te genere la matriz?

Víctor Cuervo

Toneti

Hola, estoy intentando solucionar un problema y me gustaría que me ayudaran un poco, se trata de lo siguiente:

Tengo una cadena del tipo «|data=25/10/19 20:49|temp=16.4|temp_max=25.4|temp_mxt=16:26 |temp_min=8.8|» y quiero extraer los datos de la derecha del = , el problema lo tengo porque los datos son diferentes cada vez y la longitud de la cadena tambien, me explico, los datos de la derecha del = algunas veces tienen cuatro caracteres y otras tienen tres, quisiera saber como puedo extraer estos datos independientemente que tengan tres o cuatro caracteres.

Gracias.

Víctor Cuervo

milito

ocupa la funcion split para romper la cedana en el ‘=’

Víctor Cuervo

Patroclo

hola tengo un conflico giganteeee

tengo millones de numeros de telefono pero necesito cocniliar con otra base el tema que necesito eliminar los valores por delante del numero telefonico ejemplo de datos

071264392

002176465126734

324678182

001276328452367

0923478932

 

Deseo eliminar los » 0 » por delante

 

Gracias

Víctor Cuervo

Víctor Cuervo

Buenas Patroclo,

Puedes utilizar el método .replaceFirst() con una expresión regular para eliminar los ceros.

String s = "000456";
s.replaceFirst("^0+(?!$)", "")

Espero que te ayude.

Saludos.

Víctor Cuervo

eduardo

buenas, tengo que hacer el siguiente programa y quiero saber si me pueden dar una mano.
iniciar una cadena con una palabra a mi elección. el usuario debe intentar adivinar el caracter y la posición exacta dentro de la cadena. Se solicitará al usuario que ingrese una letra y luego la posición en la que desea buscar. si el usuario ingresa un número negativo debe terminar el programa. El programa con los datos posición y caracter debe buscar si coincide en la posición de la cadena de texto el caracter ingresado y mostrar un mensaje si lo encuentra o no.
se debe manejar excepciones para verificar si el número ingresado como posición es númerico valido(no ingresar letras), y si este número al usarlo como indice esta dentro del rango permitido de la cadena de texto

Víctor Cuervo

Valeria

Hola, tengo una duda! Ingreso una fecha en tipo String, ejemplo: dd/mm/aaaa y tengo que extraer de esa cadena los valores dia, mes y año por separado en Int ! Ayuda!!

Víctor Cuervo

Kriminal

Hola..

Te pongo el código..
String fecha = «01/12/2018»; //Por ejemplo
String arrayFecha []= fecha.split(«/»); //Esto separa en un array basándose en el separador que le pases
String day = arrayFecha[0];
String month = arrayFecha[1];
String year = arrayFecha[2];

Así de sencillo.
También se puede hacer con .substring() pero es más lioso yo creo.
Saludos

Víctor Cuervo

Kriminal

Hola de nuevo..

Pides sacarlo en un int no me había fijado.. Lo mismo pero así:
int day = Integer.parseInt(arrayFecha[0]);
//Lo mismo para el mes y el año
Integer.valueOf(String); ==> También te sirve
Si lo metes en un try/catch mejor
try{
}catch(NumberFormatException nfe){
//Ha cascado, seguro el string no es correcto
}

Víctor Cuervo

Andrey Borel

Tengo una consulta, mi string es:»Huaweicp300_10.12.15.78\esta es la IP del equipo», la idea es sacar el valor que se encuenta entre «_» y «\», que siempre saque el valor entre esos simbolos de cualquier IP. Podrias ayudar. Gracias

Víctor Cuervo

Kriminal

Hola..
Una forma de hacerlo:
String string = «Huaweicp300_10.12.15.78\»;
//quitamos el último char
String string = string.substring(0,string.length -1);
//Lo sacamos en un array
String array[] = string.split(«_»);
//La sagunda posición del array es la IP
String ip = array[1];

Saludos.

Víctor Cuervo

jum

:vvv

Víctor Cuervo

kikii

me ayudan
Descripción

Los voluntarios del Coding Rush saben que no es un secreto que lo mejor de un secreto es secretamente decirle a alguien tu secreto, agregándole otro secreto secreto a su colección secreta de secretos, secretamente.

Por ello, tienen una caja con secretos y acaban de ocultar una foto muy vergonzosa de Mike en la fiesta de ingenierías. Obviamente, los voluntarios no quieren mostrarle a Mike lo que hay dentro de su caja de secretos.

Para que Mike no pueda encontrar la caja secreta, los voluntarios del Coding Rush han comprado N−1N−1 cajas adicionales y etiquetaron todas las cajas del 11 al NN, observando que la caja secreta quedó con el número PP.

Después, las apilaron todas en orden pero mientras tanto, Mike logró averiguar la caja secreta y le quito la etiqueta. Al quitarle la etiqueta, se cayeron todas las cajas y Mike necesita tu ayuda para apilarlas nuevamente porque no recuerda como estaban apiladas al principio.

Tu tarea es averiguar cómo debe colocar las N−1N−1 cajas restantes luego de quitar la caja secreta.

Entrada

En la primera línea leerás NN, el número de cajas.

En la segunda línea recibirás PP, la etiqueta de la caja secreta.

Después habrá NN líneas con un entero cada una, que representan el orden original de las cajas.

Salida

N−1N−1 enteros: las etiquetas de las cajas luego de tomar la caja secreta.

Cada uno de los enteros debe estar en una línea distinta.

Víctor Cuervo

Luis

Hola tengo una gran duda. Como puedo separar una cadena que se encuentra delimitada por una palabra en especifico(no caracter). Con tokenizer.. hasta el momento solo he visto ejemplos con caracteres pero con palabras no me ha funcionado debido a que me toma cada letra como delimitante

Víctor Cuervo

Eduardo

amigo necesito una pequeña ayuda.
Ingresar nombres y apellidos en una variable. Mostrar el primer nombre y el último apellido.

Víctor Cuervo

kriminal

Hola.. Supongamos que hay una separación de espacios entre el nombre y los apellidos..
String cadena = «Pepe apellido1 apellido2″;
String [] arrayString = cadena.split(» «);
Ahora es fácil sacar la primera parte y la última de una array no??
int nombre = 0;
int apellido2 = arrayString.length -1;
String nombre = arrayString[nombre];
String apellido2 = arrayString[apellido2];

Saludos..

Víctor Cuervo

kuronox

y si deseo que salga por ejemplo «casa»
-c
-ca
-cas
-casa

Víctor Cuervo

Lucia Palacios

Buenas noches quisiera q me ayudasen a aser un programa o q me diecen la idea de hacerlo el usuario ingresara una oracion y esa oracion la tengo q convertir a sombolos entonces ejemplo como hago para capturar algunas palabras de la oracion que me ingrese el usuario ejemplo si el usuario me ingresa una oracion q dice » Si hoy llueve entonces hace frio» en este caso como hago para capturar la palabra entonces y mostrarcela al usuario en simbolo ejemplo (transformando la oracion seria) » si hoy llueve ->(simbolo q representa el entonces) hace frio » podrian ayudarme se los agradeceria muchisiimooo

Víctor Cuervo

melissa melo silva

me ayudo mucho la publicacion para mi examen xd jiji

Víctor Cuervo

Víctor Cuervo

Melissa nos alegra mucho que te haya servido para el examen. :-D

Víctor Cuervo

Marcos

Hola, no se si alguien me pueda decir como hago para que esa substring ya no se muestre a la hora de imprimir en pantalla, es decir «hola mundo» substring 0,4 —> «mundo»
necesito ayuda

Víctor Cuervo

Víctor Cuervo

Hola Marcos,

El código es el explicado arriba. Bastaría con realizar el substring() y asignárselo a una nueva variable.

Si quieres Mundo:

String sCadena = "Hola Mundo";
String sSubCadena = sCadena.substring(5,10);
System.out.println(sSubCadena);

Si quieres Hola:

String sCadena = "Hola Mundo";
String sSubCadena = sCadena.substring(0,4);
System.out.println(sSubCadena);

Saludos.

Víctor Cuervo

manuel urbina

me encanto el blog. ire a mamar!!

Víctor Cuervo

Julio Campos

Saludos, muy buena página, una pregunta sobre el algoritmo, y si no supieramos el tamaño de la cadena? como podriamos hacer esa subcadena, supongamos que se lee una cadena de un archivo.

Víctor Cuervo

Yuni

Hola! tengo una pequeña duda, tengo un ejercicio donde el usuario ingresa un nombre y dos apellidos, luego, del nombre se extraen las ultimas 4 letras. como es algo ingresado por el usuario no puedo llegar y colocar substring con cualquier valor numérico, ya que todo varia según lo que ingrese el usuario. Ayudaaaaaa

Víctor Cuervo

Víctor Cuervo

@olivo,
Comentarios y ánimos como el tuyo nos dan ánimos para seguir escribiendo mucho más :-D

Víctor Cuervo

olivo

Gracias, me ha ayudado mucho esta publicación :)

Víctor Cuervo

Víctor Cuervo

@GelukkigTurtle, Me alegro que te haya servido. :-D

Víctor Cuervo

GelukkigTurtle

Muchas gracias y muy bien explicado me funciono!

Víctor Cuervo

henry merma

exelente de ehh

Víctor Cuervo

Héctor

MMMM, ya te dieron las herramientas para hacerlo, solo te faltaría echarle coco y generar el algoritmo para que te muestre el resultado como lo quieres, lo primero que se me viene ala mente es de que lo puedes meter dentro de un for con la longitud de la cadena

Víctor Cuervo

criminal

hola..Y como hago lo mismo sin usar .substring()..Me explico,he de hacer un programa que saque posibles subcadenas de una cadena sin usar substring,a mi solo me sale usandolo..ejemplo:entramos abcd y debe devolver:
a
ab
abc
abcd
b
bc
bcd
c
cd
d
Gracias

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.