Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation fonction 'split' pour String

Sujet résolu
25 janvier 2012 à 15:07:12

Bonjour à tous!

Je travaille actuellement sur un programme pour lequel j'aurais besoin de découper un string en plusieurs parties.
Par exemple, lorsque le programme produit ceci: "Nom, Prénom",1980.45,580.93,0.00,188.3B,"Ville"

Il me faudrait le découper en 6 parties:
"Nom, Prénom"
1980.45
580.93
0.00
188.3B
"Ville"

Même après avoir consulté l'API java http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#split(java.lang.String) je ne m'en sors pas :(

Avez-vous une idée?

Merci d'avance pour l'aide que vous pourrez m'apporter,

Francky45
  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2012 à 15:21:28

Montres-nous ton code, on t'expliquera ce qui ne va pas :)
  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2012 à 16:15:38

Merci Javier de t'intéresser à mon problème :)

Le fait est que j'ai essayé de plusieurs manières mais n'ayant jamais utilisé le 'split' dans le passé je ne comprends pas très bien comment l'incorporer dans mon programme.

Ce qui me paraît logique serait:
String url = "Nom, Prénom",1980.45,580.93,0.00,188.3B,"Ville"
String values[]  = url.split(",");


Puis je me suis dit que comme c'est un Array et pas un ArrayList il fallait attribuer valeur séparément à chaque case de l'array avec un while loop:
String url = "Nom, Prénom",1980.45,580.93,0.00,188.3B,"Ville"
String values[] = new String[i];
int i = 0;
while(i<6)
{
values[i]  = url.split(",");
i++;
}


Mais cela ne s'est pas avéré concluant.

Selon moi il y aura également un second problème avec cette méthode 'split': actuellement j'essaye de couper quand il y a une virgule mais la partie "Nom, Prénom" a une virgule mais doit rester un tout pour atteindre le but de mon programme (cette virgule entre Prénom et Nom peut ne pas être présente puisque le String url est créé dynamiquement).

Merci d'avance :)


  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2012 à 18:09:28

Salut, déjà il y a un truc pas clair pour moi pourquoi les " ne se trouve pas uniquement au debut et a la fin de la chaîne de caractère? 2ieme comment ce fait il qu'il n'y pas de ; a la fin de la 1ere ligne?
Ensuite tu veut faire un splitt en spécifiant un caractère qui dans le cas nom prénom n'est pas un séparateur, ici a part reconstituer après coup le nom prénom, une solution est de choisir un autre séparateur.
Et j'aimerais bien voir ton resultat, car là ton code ne peut pas compiler!! C'est bien du java?!
Utilise-tu un IDE?
  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2012 à 18:52:36

Citation : Francky45

Ce qui me paraît logique serait:

String url = "Nom, Prénom",1980.45,580.93,0.00,188.3B,"Ville"
String values[]  = url.split(",");


C'est exactement comme ça que la fonction split fonctionne! Elle renvoit un tableau de String, et pas un String à la fois :) . Ensuite, première des choses: comme url est un String, il faudrait pas oublier d'échapper les guillemets et de mettre le point-virgule (Ou tout simplement enlever les guillements, si j'ai bien compris ce que tu faisais. Dans un object/variable String, tout, chiffres ou lettres, est un caractères, donc dois être entre guillemets! ;) Par contre, si tu comptais les garder, faudra opter pour la formule avec les backslash) Si tu veux essayer la différence:

String url = "\"Nom, Prénom\",1980.45,580.93,0.00,188.3B,\"Ville\"";
String url2 = "Nom, Prénom,1980.45,580.93,0.00,188.3B,Ville";
String values[]  = url.split(",");
String values2[] = url2.split(",");

// Fait pas attention à la fonction si tu ne la connais pas, c'est juste pour tout afficher simplement  
for (String i : values) 
{
    System.out.println(i);
}
for (String i : values)
{
    System.out.println(i);
}


Rendu ici, comme ninlock l'a précisé, il faudra te choisir un autre séparateur si tu veux que le nom et le prénom soit gardé comme tel. Perso, j'aime bien le point-virgule, c'est classe et simple :soleil: Mais tu peux prendre n'importe quoi si tu veux!

String url = "Nom, Prénom;1980.45;580.93;0.00;188.3B,Ville";
// Je déconne, mais ça marche   
String url2 = "Nom, Prénom_LEBÔSOLEIL_1980.45_LEBÔSOLEIL_580.93_LEBÔSOLEIL_0.00_LEBÔSOLEIL_188.3B_LEBÔSOLEIL_Ville"; 
String[] value = url.split(";");
String[] value2 = url.split("_LEBÔSOLEIL_");
  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2012 à 18:53:29

Bonjour ninlock,

Je pensais réécrire ici dans le sujet seulement des parties de code mais je les réécris avec des erreurs donc voici ma classe complète:

import java.util.Arrays;


public class GetInfo {
	private String url;
	private String stockSymbol;
	private String longName;
	private double lastPrice;
	private double previousPrice;
	private double dividend;
	private double marketCap;
	private String stockMarket;
	private String values[] ;
	
	public GetInfo(String stockSymbol){
		this.stockSymbol = stockSymbol;
		
		this.url = "http://finance.yahoo.com/d/quotes.csv?s=" + stockSymbol + "&f=nl1pdj1x"; 
		String resumeInfo = URLReader.readURL(url); // converti les infos de l'URL en String

		values[]  = resumeInfo.split(",");

	}
	
	
	public String getStockSymbol(){
		return stockSymbol;
	}
	
	public String getLongName(){
		return longName;
	}


}


J'arrive bien à récupérer les infos obtenus par l'URL.
Exemples d'URL: http://finance.yahoo.com/d/quotes.csv?s=CAJ&f=nl1pdj1x et http://finance.yahoo.com/d/quotes.csv?s=APP&f=nl1pdj1x

J'utilise Eclipse comme IDE.

Désolé pour les imprécisions de mes précédents messages.
  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2012 à 19:13:46

Comme la plus grabnde parti de ta question à été éclairci par @Silvestro, et que apparemment tu ne peut pas choisir le séparateur, tu va devoir reconstituer le nom et prénom ensemble.
  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2012 à 19:20:28

Salut,

Le problème c'est que les 2 URLs que tu as fournies ne contiennent pas de virgules, dont tu auras beau essayer de les spliter en utilisant comme séparateur ',' le résultat sera le même qu'au départ.
  • Partager sur Facebook
  • Partager sur Twitter
⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.
25 janvier 2012 à 20:04:58

@ninlock Reconstituer le nom et prénom ensemble est une bonne idée facile à réaliser. Je n'y avais pas pensé. Merci :)

@Minde Ce ne sont pas les URL que je veux 'spliter', mais le String que je récupère via le fichier csv fourni par ces URL.

@Tous Quelqu'un sait-il comment je pourrais faire pour utiliser la fonction split pour séparer ceci:

"Nom, Prénom",1980.45,580.93,0.00,188.3B,"Ville"


qui pourrait aussi être ceci:
"Nom Prénom",1980.45,580.93,0.00,188.3B,"Ville"


C'est-à-dire qu'il pourrait y avoir 5 ou 6 virgules, autrement dit 6 ou 7 éléments.

Encore merci :)
  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2012 à 20:21:49

"Nom, Prénom",1980.45,580.93,0.00,188.3B,"Ville"

n'est pas une chaîne de caractères. Une chaîne de caractères c'est ça:

String str = "\"Nom, Prénom\",1980.45,580.93,0.00,188.3B,\"Ville\"";


Là la fonction split devrait fonctionner.
  • Partager sur Facebook
  • Partager sur Twitter
⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.
25 janvier 2012 à 20:35:58

Pourtant quand dans une class test j'écris ceci:
System.out.println(URLReader.readURL("http://finance.yahoo.com/d/quotes.csv?s=APP&f=nl1pdj1x"));


Eclipse me retourne bien
"American Apparel ",0.8148,0.8131,0.00,85.2M,"AMEX"


Peut-être qu'une explication précise de la manière à implémenter la fonction split m'aiderait à réfléchir au problème? :euh:

Encore merci de prendre de ton temps pour m'aider :)
  • Partager sur Facebook
  • Partager sur Twitter
25 janvier 2012 à 20:56:25

En fait le problème venait juste de la façon dont tu déclarais tes chaînes de caractères, parce-que si tu veux déclarer une chaîne str et lui attribuer la valeur "Bonjour" tu feras
String str = "Bonjour";

//et non
String str = Bonjour;

Bref si c'est ce que te retourne Eclipse alors c'est bon, tu stockes la valeur retournée par la méthode readURL dans un String et tu la splites dans un tableau.

Code:
String str = "\"Nom, Prénom\",1980.45,580.93,0.00,188.3B,\"Ville\"";
String tab[] = str.split(",");

for (String st : tab)
    	System.out.println(st);


Remplaces juste la chaîne par ta méthode, chez moi ça ne fonctionne pas il ne trouve pas la classe URLReader ?!
  • Partager sur Facebook
  • Partager sur Twitter
⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.
25 janvier 2012 à 21:12:04

Merci beaucoup Javier, Ninlock, Silvestro et Minde!

Super aide! Maintenant j'ai matière à travailler et je peux m'atteler à écrire toutes les méthodes dont j'ai besoin :)

Bonne soirée!

Ps: Désolé Silvestro, je n'avais pas vu ton message vu que j'écrivais en même temps que tu le postais :)
  • Partager sur Facebook
  • Partager sur Twitter
21 octobre 2018 à 21:01:38

comment séparer une chaine de caractère avec +,-,*,/
  • Partager sur Facebook
  • Partager sur Twitter
21 octobre 2018 à 21:41:30

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. Me contacter par MP si besoin.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)