Hej! Löser det så länge med att anropa databasen varför anropa databsen för en sådan sak? Kan du inte göra det med regexp (och jag orkar inte just nu) så kan du ju lösa det med vanlig kod. Ditt förslag: <b>Ditt förslag:</b> vad är det du vill göra? <b>regex kan inte evaluera några strängar , du kan använda det för avancerad find/replace men inte evaluering.</b> men det där är ju inte samma sak. <b>att matcha stängar är _inte_ samma sak som att evaluera en formel.</b> >>Varför börjar du ta upp formler och räkneexepel när trådskaparens tråd handlar om strängevaluering? Oj, här har det hänt saker och jag glädjs åt att vi kommit till kärnan av mitt problem och alla missförstånd har försvunnit.Evaluera en sträng
Jag har en sträng:
([var] is null or ([var] = 'K' or [var] = 'M'))
Jag vill, i C#, kunna sätta in typ en valfri variabel på [var] platsen och se om det är sant, dvs. evaluera strängen, går det? Jag är inte speciellt bra på regexp, det kanske är en lösning?Sv: Evaluera en sträng
select count(*) from ... where ([var] is null or ([var] = 'K' or [var] = 'M'))Sv:Evaluera en sträng
<code>
string tmp = "k";
if (tmp is null || (tmp = "K" || tmp = "M"))
{
Messagebox.Show("Tjoho");
}
</code>Sv: Evaluera en sträng
<code>
string tmp = "([var] is null or ([var] = 'K' or [var] = 'M')) ";
string temp = "K";
tmp = tmp.Replace("[var]",temp);
if(tmp)
...
</code>
men jag kan inte riktigt köra:
if(tmp) den evaluerar inte det jag vill, get the problemSv:Evaluera en sträng
Du har inte med mitt förslag, så som du har gjort kommer ju aldrig att fungera. Det du verkan villja med din sträng som du anger i första posten (([var] is null or ([var] = 'K' or [var] = 'M')) ) är att se om [var] är NULL, lika med "K" eller lika med "M".
Att sätta in en sträng i en IF sats som du har gjort (som inte är mitt exempel som du skriver, för det som är i din post vet jag inte vad det är) kommer inte att fungera då en IF sats kräver något som är, eller returnerar, ett boolskt värde. Kompilatorn säger ifrån direkt.
I det exemplet jag gav fanns det vissa slarvfel (is skall var ==, = skall ju självklart vara ==) eftersom jag inte testade exemplet utan hoppades på att andemieningen med hur det fungerar skulel framgå. Om du provar nedanstående
<code>
string tmp = "";
if (tmp == null || (tmp == "K" || tmp == "M"))
{
MessageBox.Show("Tjoho");
}
</code>
så kommer du att se att messageboxen ENDAST kommer att visas under följande förutsättningar
<code>
string tmp = null;
string tmp = "M";
string tmp = "K";
</code>
I alla andra fall kommer IF-uttrycket att bli falskt.
Är det så att du inte vill att uttrycket skall vara sant under följande villkor (Null, "K" eller "M") så får du ange under vilka villkor du vill att uttrycket skall vara sant.Sv: Evaluera en sträng
regex kan inte evaluera några strängar , du kan använda det för avancerad find/replace men inte evaluering.
ska du evaluera en sträng så finns det några olika sätt.
1) använd jscript.net
2) använd managed c# compilern och kompilera en snutt c# kod i runtime
3) använd formelfält i ett dataset (ett fält kan sättas till ett expression)
4) skriv en egen expressiontolk :-) , klart roligast och mest utmaning
hur du använder managed c# kompilern finns i programarkivet här någonstanns..Sv:Evaluera en sträng
Jovisst går det... man får sätta upp det mönster man vill att regexp skall söka efter och evaluera bara.
<code>
private bool IsInteger(string text)
{
Regex _isNumber = new Regex(@"^\d+$");
Match m = _isNumber.Match(text);
return m.Success;
}
</code>
Denna kontrollerar tex om strängen enbart innehåller siffror (ja jag vet, funktionen borde inte heta isIteger). Söker du i forumet så komemr du hitta alldeles för många träffar om hur man evaluerar om en sträng är ett personummer, en postkod, ett telefonnummer osv...Sv: Evaluera en sträng
det där är ju bara strängmatching.
att matcha stängar är _inte_ samma sak som att evaluera en formel.
visa mig det regex som kan få fram vad "1 + 2.34 * (1 / 5) " blirSv:Evaluera en sträng
Varför börjar du ta upp formler och räkneexepel när trådskaparens tråd handlar om strängevaluering? Det han verkar villja göra är att kontrollera om [var] är Null, [Var] är = "M" eller [var] = "K". Att börja räka med hjälp av Regexp har inte varit aktuellt förrens du tog upp det utan tråden har enbart handlat om strängar.
Sv: Evaluera en sträng
därför att det är exakt det han frågar?
han frågar ju hur han evaluerar formeln i hans sträng..
om han inte vore ute efter att evaluera innehållet i strängen så skulle han ju bara skriva en vanlig ifstats..Sv:Evaluera en sträng
Marcus: Rörande inlägget med "Ditt förslag" så vet jag mycket väl att det inte kommer att fungera och jag ville bara visa på att jag hade förklarat lite luddigt/du missförstod mitt problem. Jag har en sträng vilken innhåller något villkor jag vill evaluera.
Roger: Ditt inlägg med de olika förslagen var precis det jag sökte.
Tack för hjälpen!