Ask a Question

replace a string in a file

SOLVED
msalvador
Frequent Contributor

replace a string in a file

Hi guys, I need to find a string in a file and replace with another string I find: web.admin.user=admin and I want to chane with: web.admin.user=pippo a snippet: function FindandReplaceTextValue(Filename, OldStr, NewStr) //Find a text in a file and replace it { var myFile = aqFile.OpenTextFile(Filename, aqFile.faReadWrite , aqFile.ctUTF8); var Str; myFile.SetPosition(1,1); Str = myFile.ReadLine(); // Reads text lines from the file and posts them to the test log while(! myFile.IsEndOfFile()) { Str = myFile.ReadLine(); if (Str == OldStr) { myFile.Cursor--; myFile.r myFile.Write(NewStr) //Replace the string } myFile.Cursor++; } // Closes the file myFile.Close(); } this do not work because add a new line
4 REPLIES 4
tristaanogre
Esteemed Contributor

For readability, repasting your function formatted better.

 

function FindandReplaceTextValue(Filename, OldStr, NewStr) //Find a text in a file and replace it {
    var myFile = aqFile.OpenTextFile(Filename, aqFile.faReadWrite , aqFile.ctUTF8);
    var Str; myFile.SetPosition(1,1);
    Str = myFile.ReadLine(); // Reads text lines from the file and posts them to the test log
    while(! myFile.IsEndOfFile()) {
        Str = myFile.ReadLine();
        if (Str == OldStr) {
            myFile.Cursor--;
            myFile.r
            myFile.Write(NewStr) //Replace the string
        }
        myFile.Cursor++;
    }
    myFile.Close();
}

That said.... rather than reading the file one line at a time and then trying to replace the line, you could read the whole text file in all at once using aqFile.ReadWholeTextFile.  This will read the whole file in as a single string.  You can then simply use the aqString.Replace method to replace the desired string and then save the file back down, overwriting the existing file.

 


Robert Martin
[Hall of Fame]
Please consider giving a Kudo if I write good stuff
----

Why automate?  I do automated testing because there's only so much a human being can do and remain healthy.  Sleep is a requirement.  So, while people sleep, automation that I create does what I've described above in order to make sure that nothing gets past the final defense of the testing group.
I love good food, good books, good friends, and good fun.

Mysterious Gremlin Master
Vegas Thrill Rider
Extensions available
msalvador
Frequent Contributor

Ok I will try.

msalvador
Frequent Contributor

Here the solution:

function FindandReplaceTextValue(Filename, OldStr, NewStr) //Find a text in a file and replace it
{
  var sPath = Filename;

  // Opens the created file for reading
  var myFile = aqFile.ReadWholeTextFile(sPath, aqFile.ctANSI);
 
    if (aqString.Find(myFile,OldStr)!= -1)
    {
      myFile = aqString.replace(myFile, OldStr, NewStr); //Replace string
      aqFile.WriteToTextFile(Filename, myFile, aqFile.ctANSI, true);
    }
}
sonya_m
SmartBear Alumni (Retired)

Thank you for sharing @msalvador 


Sonya Mihaljova
Community and Education Specialist

cancel
Showing results for 
Search instead for 
Did you mean: