Autor
|
Tema: Eliminar espacios a la derecha (Leído 11,580 veces)
|
Xedrox
Desconectado
Mensajes: 274
|
Supongan que tengo el siguiente string "hola ", y quiero que sea simplemente "hola", hay alguna funcion que elimine los espacios o me tengo que programar alguna?? -.- -.- -.- -.- -.- -.-
GRACIAS!
|
|
|
En línea
|
|
|
|
Edu
Desconectado
Mensajes: 1.082
Ex XXX-ZERO-XXX
|
No se si en Java existe el string.Trim() Y si existe fijate que habra 2 mas para elegir para que lado, por si alguna vez necesitas solo de un lado, ya que ahora da igual q lado pienso. O sino podrias usar la funcion de remplazar para remplazar los " " por ""
|
|
|
En línea
|
|
|
|
Valkyr
Desconectado
Mensajes: 646
Divide y vencerás
|
Puedes usar la función trim() de String. Esta función te elimina los blancos que hayan antes de comenzar el texto y al final, pero los que hay por enmedio NO los elimina.
Otra forma que podrías tener de eliminarlos sería usando la función split(" +"), la cual te devolvería un array con todas las palabras que hay separadas por espacios. Por ejemplo, si tenemos: "hola, me llamo Perico de Los palotes" te devolvería un array que sería: hola,;me;llamo;Perico;de;Los;palotes; (he separado cada elemento por ; para que quede más claro). El motivo de poner como parámetro a la función " +" es porque es una expresión regular que significa uno o más espacios.
Espero que te sirva.
Saludos.
|
|
|
En línea
|
|
|
|
klaine
|
Hace un tiempo me hice esta clase, espero te sirva la el método inTrim(), saludos import javax.swing.*; import java.io.*; import javax.swing.JFileChooser.*; import javax.swing.filechooser.FileFilter;
public class ZString {
public ZString(){
}
String getFile(String[] exts, String dir, String description){
/** * * Obtiene la ruta de un archivo, dada una lista de extensiones * de la forma: * * ".ext" * * El segundo argumento asigna una ruta * como directorio inicial, donde se mostrara * el cuadro de dialogo abrir como * * El tercer argumento asigna un valor de referencia * para el usuario que vera el cuadro de dialogo, * por ejemplo: * * "Archivos de texto plano" * * */
txtFilter txf = new txtFilter();
txf.extensions = exts;
txf.desc = description;
JFileChooser jfc = new JFileChooser();
jfc.setFileFilter(txf);
jfc.setCurrentDirectory(new File(dir));
int res=jfc.showOpenDialog(null);
if(res==jfc.APPROVE_OPTION){
return jfc.getSelectedFile().toString();
}else{
return "No se seleccionó ningun archivo";
}
}
String inTrim(String s){
/** * Elimina el exceso de espacios dada una cadena de caracteres * * Retorna: Cadena la cadena de caracteres recibida * sin espacios al principio ni al final y * cada palabra separada solo de un espacio * * Si se recibe un salto de linea el utltimo caracter de * una linea sera separado de la siguiente linea * solo por un salto de linea y no un espacio mas * un salto de linea * */
String out="";
String arr[] = s.split(" ");
boolean init = true;
for(String val:arr){
if(init&&!val.equals("")){
out+=val; init=false;
}else if (!val.equals("")){
out+=" "+ val;
}
}
return out.replace("\n ", "\n"); }
void show(String s){
JOptionPane.showMessageDialog(null, s);
}
int txtCount_words(String file){
/** * Dada la ruta de un archivo de texto plano * devuelve el numero de palabras * encontradas en ese acrchivo. * * */
String a="", in="";
try{
BufferedReader bf = new BufferedReader(new FileReader(new File(file)));
while(a!=null){
a=bf.readLine();
if (a!=null){
in+=a + " ";
}
}
}catch(FileNotFoundException FEX){
}catch(IOException IOEX){
}
String tin = (String) (new ZString()).inTrim(in);
String[] ing = tin.split(" ");
if(new ZString().txtCount_chars(file)==0){
return 0;
}else{
return ing.length;
}
}
void writer(String[] args, String file, boolean rewrite, boolean delete_on_exit){
/** * * El primer argumento indica * las palabras que se agregaran al archivo de * texto plano. * * El segundo argumento indica la ruta de * dicho archivo. * * Si el tercer argumento * es true el archivo * se sobreescribe * * Si el cuarto argumento es true * el archivo se borra al cerrar * el programa * * */
String[] in=this.reader(file).split("\n");
Writer w=new Writer(file, delete_on_exit);
if(rewrite){
w.touch();
}else{
for(String val:in){
w.write(val);
}
}
for(String val:args){
w.write(val);
}
w.close();
}
int txtCount_chars(String f){
/** * Dada la ruta de un archivo de texto plano * devuelve el numero de caracteres * encontrados en ese acrchivo. * * No se cuentan espacios * ni saltos de linea * */
String a="", in="";
try{
BufferedReader bf = new BufferedReader(new FileReader(new File(f)));
while(a!=null){
a=bf.readLine();
if (a!=null){
in += a;
}
}
}catch(FileNotFoundException FEX){
}catch(IOException IOEX){
}
return (new ZString()).noSpace(in).length();
}
public String reader(String file){
/** * Dada la ruta de un archivo de texto plano, * devuelve el contenido de dicho archivo * * */
String out="";
String a="";
try{
BufferedReader r=new BufferedReader(new FileReader(new File(file)));
while(a!=null){
a=r.readLine();
if(a!=null){
out+=a + "\n";
}
}
}catch(FileNotFoundException fnfEX){
JOptionPane.showMessageDialog(null, "El archivo especificado no existe");
}catch(IOException ex){
}
return out;
}
String noSpace(String s){
/** * * Dado un String retorna el mismo String * Sin espacios * */
String out="";
String[] in = s.split(" ");
for(String val:in){
out+=val;
}
return out;
}
String getTxtFile(){
/** * * Abre un cuadro de dialogo abrir... * Devuelve la ruta del archivo especificado en esa * ruta, si se presiona cancelar, no se tomaran acciones. * * (Queda a criterio) * */
String file="";
JFileChooser jfc = new JFileChooser();
jfc.setCurrentDirectory(new File(System.getProperty("user.home") + "\\Desktop")); jfc.setApproveButtonText("Analizar"); jfc.setMultiSelectionEnabled(false);
txtFilter f=new txtFilter();
jfc.setFileFilter(f);
int returnval = jfc.showDialog(jfc, "Analizar...");
if (returnval==jfc.APPROVE_OPTION){
file=jfc.getSelectedFile().toString();
}
return file;
}
}
class txtFilter extends FileFilter{
String[] extensions = {".txt", ".bat", ".vbs", ".js"};
String desc = "Plain txt files |*.txt |*.bat | *.vbs |*.js";
txtFilter(){
}
public boolean accept(File f){
boolean a=false;
if(f.isDirectory()){
return true;
}
for (String val:extensions){
if (f.toString().endsWith(val)){
a=true; break;
}else{
a=false;
}
}
return a;
}
public String getDescription(){
return desc;
}
}
class Writer {
java.io.BufferedWriter bw;
String file="";
Writer(String foo, boolean delete){
this.file=foo;
try{
File f = new File(this.file);
if(delete){
f.deleteOnExit();
}
bw=new BufferedWriter(new FileWriter(f));
}catch(IOException ex){
} }
public void write(String line){
try{
bw.append(line);
bw.newLine();
}catch (IOException ex) {
ex.printStackTrace();
}
}
public void touch(){
/** ** Vacia el archivo con el cual se construyo este objeto ** o lo crea si no existe **/
File f = new File(this.file);
try{
if(f.exists()){ f.delete(); f.createNewFile(); }else{ f.createNewFile(); }
}catch(IOException c){
}
}
public void touch(String foo){
/*** * Vacia el archivo dado * * Si el archivo no existe se crea * * Si el String recibido no es una ruta valida * se lanzara IOException, se captura aqui mismo, * las acciones a tomar en ese caso quedan a criterio. * En este metodo el catch esta vacio * * NOTA: Las rutas de archivos se separan con "\", * "\" es un caracter especial para java, para no tener problemas con esto, * se usa "\\" para denotar dicho caracter * * ***/
try{
File fi= new File(foo);
if(fi.exists()){
fi.delete(); fi.createNewFile();
}else{
fi.createNewFile();
}
}catch(IOException c){
}
}
public void close(){
try{
this.bw.close();
}catch(IOException ex){
}
}
}
|
|
|
En línea
|
|
|
|
Valkyr
Desconectado
Mensajes: 646
Divide y vencerás
|
El método que propones no está mal, pero es bastante ineficiente trabajar con un string e ir concatenando elementos. Si lo haces con un StringBuffer funcionaría mucho mejor. Además, si haces un split() y le pasas como parámetro " +" no tienes que realizar comprobaciones, ya que te devuelve un array que solo contiene palabras (fijate que el parámetro a dicha función es una expresión regular, y con la que he escrito, reconoce uno o más espacios).
Saludos.
|
|
|
En línea
|
|
|
|
klaine
|
de hecho deberia arreglar eso por que si a split() le pasas "\\" te tira unexpectedInternalError xD Saludos
|
|
|
En línea
|
|
|
|
Starcarr
Desconectado
Mensajes: 2
|
Ustedes se complican mucho con cosas que ya están hechas: public static void main(String[] args) { String s= " Hola mundo mundial! "; System.out.println(s.trim()); System.out.println(s.replace(" ", "")); }
Resultado: Hola mundo mundial! Holamundomundial!
Saludos.
|
|
|
En línea
|
|
|
|
Valkyr
Desconectado
Mensajes: 646
Divide y vencerás
|
Ustedes se complican mucho con cosas que ya están hechas:
Resultado: Saludos.
Sí, pero si el objetivo es dejar las palabras separadas entre sí por un único espacio, y que no empiece ni termine por espacios, lo que propones no valdría. Una forma que se me acaba de ocurrir podría ser esta: String texto = new String(" Hola esto es una prueba de eliminar espacios "); texto = texto.replaceAll(" +", " "); texto = texto.trim();
Y nos devolvería la siguiente salida: Hola esto es una prueba de eliminar espacios Hola esto es una prueba de eliminar espacios Donde, se han eliminado los espacios por la izquierda y la derecha, y además solo existe un espacio entre cada palabra. Saludos.
|
|
|
En línea
|
|
|
|
bengy
Desconectado
Mensajes: 501
mis virtudes y defectos son inseparables
|
Utiliza un tokenizer (solo para frases cortas) o un lector (para textos largos) en el tokenizer tu le mandas un delimitador por ejemplo " " o " " que es lo mismo en la frase siguiente : hola mundo como estas el resultado sera hola mundo como estas y asunto solucionado.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
teclas derecha izquirda, arriba y abajo
Programación C/C++
|
mrkcc
|
3
|
4,030
|
10 Junio 2010, 08:40 am
por Saberuneko
|
|
|
Tabulación a la derecha
Programación C/C++
|
Programador91
|
4
|
3,058
|
12 Abril 2012, 17:23 pm
por Programador91
|
|
|
pagina se me recorre a la derecha
Desarrollo Web
|
basickdagger
|
2
|
2,103
|
22 Marzo 2013, 01:37 am
por basickdagger
|
|
|
Eliminar espacios lineas archivo de texto
Scripting
|
Shuffle66
|
7
|
8,383
|
18 Julio 2013, 11:48 am
por Shuffle66
|
|
|
Eliminar Espacios entre componentes (matriz de jtextfield de 10*10)
Java
|
d!lan
|
0
|
2,060
|
2 Marzo 2014, 23:41 pm
por d!lan
|
|