2017-03-27 1 views
0

Donc j'essaie d'obtenir un programme en cours d'exécution pour me sauver copier et coller des charges de texte pour android studio. Pour cela, j'ai créé des listes de sélection avec tous les différents bits d'information requis, ajouté un événement de clic sur un bouton pour créer un document, et un autre événement de clic sur un bouton pour ajouter le texte dans le document. Jusqu'à présent, je suis en mesure de générer tout le texte lors de l'ajout d'un ensemble de latlongs, mais je ne peux pas sembler trouver comment ajouter un autre ensemble latlongs dans .. Par exempleRemplacer plusieurs mots dans le document texte C#

J'ai besoin:

googleMap.addMarker(new MarkerOptions().position(new LatLng(-17.79940000000, 31.01680000000)).title(bbb)); 

googleMap.addMarker(new MarkerOptions().position(new LatLng(-17.80150000000, 
31.03650000000)).title(ccc)); 

Mais tout est que je reçois est:

googleMap.addMarker(new MarkerOptions().position(new LatLng(-17.79940000000, 31.01680000000)).title(bbb)); 

googleMap.addMarker(new MarkerOptions().position(new LatLng(-17.80150000000, 31.01680000000)).title(bbb)); 

La valeur Longitude ne change pas? J'espère que tout cela a du sens?

string path = Environment.CurrentDirectory + "/" + "latlong.txt"; 

    private void button1_Click(object sender, EventArgs e) 
    { 
     if (!File.Exists(path)) 
     { 
      File.CreateText(path); 
      MessageBox.Show("File has been created."); 
     } 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     using (StreamWriter stwr = new StreamWriter(path)) 
     { 
      for (int i = 0; i < listBox1.Items.Count; i++) 
      { 
       stwr.WriteLine("googleMap.addMarker(new MarkerOptions().position(new LatLng(" + listBox1.Items[i] + ", " + "ii" + ")).title(" + "bbb" + "));"); 
      } 
      stwr.Close(); 
      string text = File.ReadAllText("latlong.txt"); 
      for (int ii = 0; ii < listBox2.Items.Count; ii++) 
      { 

       text = text.Replace("ii", Convert.ToString(listBox2.Items[ii])); 
      } 
      File.WriteAllText("latlong.txt", text); 
     } 
    } 
+1

Remplacer remplace toutes les occurrences, jetez un oeil à ceci: http://stackoverflow.com/questions/141045/how-do-i-replace-the-first-instance-of-a-string-in-net – emed

+0

Que diriez-vous de 'foreach (var element dans listBox [1/2]) 'ou' listBox [1/2] .Items.ForEach (element => '? – JHBonarius

Répondre

2

Je suppose que le problème est que Replace est de remplacer toutes les occurences de ii, donc si vous déboguer votre boucle, vous verrez que seule la première fois ii est remplacé par le premier élément de votre listBox2. Pour résoudre cela, je pense que vous devez ajouter l'index ii, quelque chose comme ça

private void button2_Click(object sender, EventArgs e) 
{ 
    using (StreamWriter stwr = new StreamWriter(path)) 
    { 
     for (int i = 0; i < listBox1.Items.Count; i++) 
     { 
      stwr.WriteLine("googleMap.addMarker(new MarkerOptions().position(new LatLng(" + listBox1.Items[i] + ", " + "ii" + i + ")).title(" + "bbb" + "));"); 
     } 
     stwr.Close(); 
     string text = File.ReadAllText("latlong.txt"); 
     for (int ii = 0; ii < listBox2.Items.Count; ii++) 
     { 

      text = text.Replace("ii"+ii, Convert.ToString(listBox2.Items[ii])); 
     } 
     File.WriteAllText("latlong.txt", text); 
    } 
} 

Notez que dans la première boucle, je suis d'ajouter "ii" + i et dans le second je remplace "ii"+ii

+0

Ahh c'est génial! Je vois où je me suis trompé, merci beaucoup! :) –