Ik worstel met een stukje code en krijg de foutmelding:
Te veel tekens in letterlijke letterfout
C# en switch-statement gebruiken om een stringbuffer te doorlopen en tokens te lezen, maar de fout in deze regel krijgen:
geval ‘&&’:
geval ‘||’:
geval ‘==’:
Hoe kan ik de ==
en &&
als een char behouden?
Antwoord 1, autoriteit 100%
Dit komt omdat in C# enkele aanhalingstekens (''
) een enkel teken aangeven (of inkapselen), terwijl dubbele aanhalingstekens (""
) worden gebruikt voor een reeks karakters. Bijvoorbeeld:
var myChar = '=';
var myString = "==";
Antwoord 2, autoriteit 6%
Hier is een voorbeeld:
char myChar = '|';
string myString = "||";
Tekens worden gescheiden door enkele aanhalingstekens en tekenreeksen door dubbele aanhalingstekens.
Het goede nieuws is dat C# switch-statements werken met strings!
switch (mytoken)
{
case "==":
//Something here.
break;
default:
//Handle when no token is found.
break;
}
Antwoord 3, autoriteit 2%
Je kunt ==
of ||
niet als tekens behandelen, omdat het geen tekens zijn, maar een reeks tekens.
Je zou je switch…case in plaats daarvan op snaren kunnen laten werken.
Antwoord 4, autoriteit 2%
Een teken kan slechts één teken bevatten, een letterlijk teken is een enkel teken tussen enkele aanhalingstekens, bijv. '&'
– als u meer tekens dan één heeft, wilt u een tekenreeks gebruiken, daarvoor moet je dubbele aanhalingstekens gebruiken:
case "&&":
Antwoord 5
Ik geloof dat je dit kunt doen met een Unicode-codering, maar ik betwijfel of dit is wat je echt wilt.
De ==
is de unicode-waarde 2A76, dus ik denk dat je dit kunt doen:
char c = '\u2A76';
Ik kan dit momenteel niet testen, maar ik zou graag willen weten of dat voor u werkt.
Je zult moeten graven naar de anderen. Hier is een Unicode-tabel als je wilt kijken:
http://www.tamasoft.co.jp/en/ general-info/unicode.html
Antwoord 6
Ik had hetzelfde probleem.
String.Replace('\\.','')
is geen geldige instructie en geeft dezelfde fout.
Dankzij C# kunnen we dubbele aanhalingstekens gebruiken in plaats van enkele aanhalingstekens en de volgende werken
String.Replace("\\.","")