Vor kurzem hatte ich einige Probleme mit dem neuen TeaScript- Interpreter. Das größte Problem besteht darin, festzustellen, ob eine Zeichenfolge Sonderzeichen enthält oder nicht.
Herausforderung
Ein Sonderzeichen wird als Zeichen mit den Codepunkten 160 bis 255 definiert. Sie erhalten eine Eingabe, bei der es sich um eine Zeichenfolge mit den Codepunkten 0 bis 255 handelt, von denen höchstens eines ein Sonderzeichen ist. Die Eingabe besteht aus einem Präfix von null oder mehr Zeichen, einer Zeichenfolge in Anführungszeichen und einem Suffix von null oder mehr Zeichen. Wenn die Zeichenfolge in Anführungszeichen ein Sonderzeichen enthält, sollten Sie einen Wahrheitswert ausgeben, andernfalls einen Falschwert.
Einzelheiten
- Die Zeichen
"'
werden als Anführungszeichen betrachtet. - Innerhalb der Zeichenfolge in Anführungszeichen wird ein Backslash
\
verwendet, um das folgende Zeichen zu umgehen. Im Präfix und Suffix hat es keine besondere Bedeutung. - Zitate werden immer ausgewogen sein.
- Es wird nur eine Zeichenfolge in Anführungszeichen geben.
Beispiele
"Hello, World¡"
true
"Hello, World"¡
false
"Hello' Wo\"rld\\"¡
false
ab"cd\"ef\\gh\i\\"£
false
\"foo¡"
true
'
Zeichenfolgen und mehrere Zeichenfolgen in einem einzelnen Testfall verwenden (idealerweise mit dem Unicode-Zeichen dazwischen).Antworten:
Netzhaut ,
1917 BytesVielen Dank an user81655 für das Speichern von 2 Bytes.
Die Byteanzahl verwendet ISO 8859-1.
Die Ausgabe ist 0 oder 1.
Probieren Sie es online aus.
Erläuterung
Aufgrund der Annahmen der Herausforderung beginnt die erste
'
oder"
die einzige Zeichenfolge der Eingabe und die letzte'
oder"
beendet sie. Wir müssen uns auch keine Sorgen machen, dass sie gleich sind, weil sie garantiert sowieso gleich sind.Daher versucht der reguläre Ausdruck nur, ein Zeichen mit den Codepunkten 161 bis einschließlich 255 zu finden, dem ein Anführungszeichen vorausgeht und dem ein anderes folgt. Es wird immer entweder 0 oder 1 Übereinstimmung geben.
quelle
"abc"¡'
? (Ich denke, je nachdem, wie Sie das OP lesen, kann dieses bloße einfache Anführungszeichen niemals in einer Eingabe vorkommen, aber technisch gesehen enthält diese Eingabe nur einen Satz von Anführungszeichen.)(['"]).*[¡-ÿ].*\1
. Es ist praktischer.Hinweis: Dies kann mit einem einfachen regulären Ausdruck erfolgen.
s=>s.match`['"].*[¡-ÿ].*['"]`
ist 29 Bytes in JavaScript, aber es macht mehr Spaß ohne reguläre Ausdrücke:JavaScript (ES6),
8482 ByteErläuterung
Rückgabe
1
fürtrue
und0
fürfalse
. Der" "
im folgenden Code ist einU+00A0 NO-BREAK SPACE
(Codepunkt 160).Prüfung
Code-Snippet anzeigen
quelle