webForumDet fria alternativet

Skall replace vara så konstigt???

.NET

12 svar · 270 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Försöker att göra en replace.
I VB är ju detta en baggis men i C# har jag inte hittat något så enkelt.

Jag försökte så här:

public static string Byta(string fileName)
		{
			string tString;
			tString = Replace(fileName, "'", "''");
			return Byta(tString);			
		}

Och får då Error:
The name 'replace' does not exist in the class or namespace 'SAW.kontroller'
Evtersom jag är helt nybörjare, vad betyder detta och hur avhjälpa?

Medlem sedan maj 20021 466 inlägg
#2

I C# finns inga globala funktioner.
Prova
tString = fileName.Replace("'", "''");

Medlem sedan mars 20011 880 inlägg
#3

Nej tyvär.
Så här har jag det nu:
I formuläret (en testknapp)

kontroller.Byta(textBoxFirma.Text);

I classen kontroller

		public static string Byta(string fileName)
		{		
			string tString = fileName; 
			tString = fileName.Replace("'", "''");
			return Byta(tString);
		}

Detta fungerar inte, applikationen fryser.
Måste jag först kolla om "'" finns?

Medlem sedan maj 2001329 inlägg
#4

Det låter som om du lyckats göra en oändlig loop. Utan att testa så fungerar antagligen Replace så att den hela tiden börjar från början och letar upp det värde du vill byta ut. Eller så fortsätter den från den punkt där den nyss byte ut ett värde och stegar sen för att komma in i det andra ' du stoppade in. Effekten är den samma ..en oändlig loop.

Du kan lösa detta genom att replace med ett annat värde istället för ' tex ´.

eller göra en egen loop (ej testad)

for(int i=0;i<tString.Length;i++) {
 if((char)tString[i] == '\\'') {  //\\' tror jag funkar
    tString = thisString.Insert(i, "'");  //lägger in ett ' till
  }
  i++;  //ökar i med ett så att vi inte snubblar in på andra inlagda ':et
}
Medlem sedan mars 20011 880 inlägg
#5

Skall verkeligen en enkel Replace behöva vara så inveklad??
Du skall ha tack för att du försöker men jag får ett error:

E:\C#\SAW\SAW\kontroller.cs(52): The type or namespace 
name 'thisString' could not be found (are you missing a using
 directive or an assembly reference?)
Medlem sedan juni 20022 599 inlägg
#6
		public static string Byta(string fileName)
		{		
			string tString; 
			tString = fileName.Replace("'", "''");
			return [b]tString[/b]; //OBS!
		}
Medlem sedan maj 2001329 inlägg
#7

Den är inte inveklad gäller bara att man tänker till innan man gör saker när man programmerar annars händer lätt såna här fel.

Angående felmedellandet. Läs det en gång till. På rad 52 så kan den inte hitta typen eller namespacet 'thisString'. (Skriver inte såhär för att vara sarkastisk utan för att du själv skall tänka efter och komma på vad som är fel)

Medlem sedan maj 2001329 inlägg
#8

hee, niko hittade nog felet. Då antog jag fel då ;)

Medlem sedan mars 20011 880 inlägg
#9

Grynet!
Ang ditt försök. Jag försökte att lägga in string thisString vilket jag
antar borde vara ett måste (att deklarera datatypen).
Niko!
Tack för att du återigen försöker att hjälpa mig, men ingenting händer.
(applikationen fryser iallafall inte)
Nu ser det alltså ut såhär:

//under knappen
kontroller.Byta(textBoxFirma.Text);

// i classfilen
public static string Byta(string fileName)
		{		
			string tString; 
			tString = fileName.Replace("'", "''");
			return tString; 
		}

Det känns på något sätt som om den inte är "kopplad"

Medlem sedan juni 20011 732 inlägg
#10

Var gör du av värdet du returnerar då?

//under knappen
[b] string s = [/b]kontroller.Byta(textBoxFirma.Text);

// i classfilen
public static string Byta(string fileName)
  {		
    string tString; 
    tString = fileName.Replace("'", "''");
    return tString; 
}
Medlem sedan mars 20011 880 inlägg
#11

Jo men nu...
När jag gjorde såhär:

string s = kontroller.Byta(textBoxFirma.Text);
			textBoxFirma.Text=s;

Tack för eran hjälp

Medlem sedan juni 20011 732 inlägg
#12

Undik att skapa variabler som inte behövs. gör så här istället:

textBoxFirma.Text = kontroller.Byta(textBoxFirma.Text);
Medlem sedan mars 20011 880 inlägg
#13

Tack, du har säkert alldeles rätt, det låter ju logiskt.

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)