webForumDet fria alternativet

Ersätta speciell rad i en fil

.NET

10 svar · 397 visningar · startad av Razofish

Medlem sedan sep. 2000780 inlägg
Frågan#1

Hej!

Jag har en vanlig textfil som innehåller div. inställningar för en serverapplikation och tänkte skapa ett roterade schema för ett lösenord.
Filen ser ut såhär:

variabel1 "värde"
variabel2 "värde"
variabel3 "värde"
variabel4 "värde"
variabel5 "värde"

Hur gör jag enklast för att ersätta "värdet" för t.ex. variabel3

Språket är C#

Medlem sedan maj 20021 466 inlägg
#2

Du frågade efter den enklaste metoden. Det är att använda en annan lagringsmetod, t.ex. XML-fil eller databas.

Om du vill använda en textfil är det enklast (och säkrast) att läsa in hela filen först och sedan skapa en ny på hårddisken som ersätter den gamla.

Medlem sedan sep. 2000780 inlägg
#3

Då jag själv inte utvecklat serverapplikationen är XML-fil / databas inget alternativ.

Medlem sedan maj 20021 466 inlägg
#4

Då får jag hoppas att det andra alternativet fungerar.

Medlem sedan sep. 2000780 inlägg
#5

Men frågan återstår ju fortfarande:

Hur gör jag enklast för att ersätta "värdet" för t.ex. variabel3

Medlem sedan maj 20021 466 inlägg
#6

Jag svarade på frågan. Om du inte är nöjd med svaret får du förklara vad det är för fel på det.

"att läsa in hela filen först och sedan skapa en ny på hårddisken som ersätter den gamla"

Vad är problemet? Att läsa in filen, tolka filen, ersätta strängen eller spara den? Jag hjälper gärna till med enskilda problem men du kan inte förvänta dig en färdig lösning.

IndexOf kan användas för att hitta värdet du vill ersätta och StringBuilder.Replace kan användas för att ersätta en del av strängen. I detta fall kan det vara bra att tolka filen rad för rad genom att dela upp strängen i rader med t.ex. Split eller Substring. Du kan också läsa in filen rad för rad om du föredrar det.

Som du har förstått finns det inget superenkelt sätt.

Medlem sedan sep. 2000780 inlägg
#7

Okej, mitt problem är att kunna tolka filen och ersätta strängen. StringBuilder.Replace är jag med på hur jag kan använda. Men det jag vill ha svar på är hur jag hittar just innehållet för variabeln3, alltså texten mellan " ".

Medlem sedan maj 20021 466 inlägg
#8

Ta reda på var varje rad börjar och slutar genom att söka efter radbrytningar ("\r\n").

Jämför sedan om raden börjar med det den ska börja med och ersätt hela raden med Replace om det är rätt rad.

Du kan också söka efter mellanrum eller " om du vill plocka ut enskilda delar från raden.

Medlem sedan aug. 2002136 inlägg
#9

Private Function ReadSpecificLine(FindString As String)
Dim strInput As String
Dim f As Integer

f = FreeFile

Open "C:\hej.txt" For Input As f

Do Until Left(strInput, Len(FindString)) = FindString
Input #f, strInput
Loop

Close f

ReadSpecificLine = Mid(strInput, Len(FindString) + 2, Len(strInput))
End Function

KOnvertera bara ovanstånede funktion till .NET (det är v6 nu) så kan du göra det. Jag gjorde funktionen för nått år sedan och den funkar utmärkt.

Medlem sedan nov. 2003569 inlägg
#10

Razofish..

det bästa sättet är att connecta mot textfilen med ett command objekt och använda SQL för att query:a i textfilen, och då kan du också använda de gamla hederliga UPDATE INSERT för att lägga till rader och ändra i dem...

http://www.webforum.nu/showthread.php?postid=957401#post957401

Medlem sedan sep. 2000780 inlägg
#11

Nu har jag läst in hela filen i en StringBuilder och går igenom den rad för rad.

_sb.Replace("Äppel","Banan");

Denna byter ju ut Äppel mot Banan, men går det att koda så den byter ut hela raden som innehåller Äppel mot Banan och inte bara den specifika strängen "Äppel"

Tack för alla tips!

256 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)