Tokenize a string with escaping: Difference between revisions
Content added Content deleted
(Add Swift) |
|||
Line 2,116: | Line 2,116: | ||
{{Out}}See it in running in your browser by [https://scalafiddle.io/sf/EsIjPQg/0 ScalaFiddle (JavaScript)] or by [https://scastie.scala-lang.org/O3DgMmuOSCS5DD6zQXK7MA Scastie (JVM)]. |
{{Out}}See it in running in your browser by [https://scalafiddle.io/sf/EsIjPQg/0 ScalaFiddle (JavaScript)] or by [https://scastie.scala-lang.org/O3DgMmuOSCS5DD6zQXK7MA Scastie (JVM)]. |
||
=={{header|Simula}}== |
|||
<lang simula> |
|||
SIMSET |
|||
BEGIN |
|||
LINK CLASS ITEM(TXT); TEXT TXT;; |
|||
REF(HEAD) PROCEDURE SPLIT(TXT, SEP, ESC); TEXT TXT; CHARACTER SEP, ESC; |
|||
BEGIN |
|||
REF(HEAD) PARTS; |
|||
CHARACTER CH; |
|||
TEXT PART; |
|||
PART :- BLANKS(TXT.LENGTH); |
|||
PARTS :- NEW HEAD; |
|||
TXT.SETPOS(1); |
|||
WHILE TXT.MORE DO BEGIN |
|||
CH := TXT.GETCHAR; |
|||
IF CH = ESC THEN BEGIN |
|||
IF TXT.MORE THEN BEGIN |
|||
CH := TXT.GETCHAR; |
|||
PART.PUTCHAR(CH); |
|||
END ELSE BEGIN |
|||
ERROR("SPLIT: ESCAPE CHAR AT END OF STRING"); |
|||
END; |
|||
END ELSE IF CH = SEP THEN BEGIN |
|||
NEW ITEM(COPY(PART.SUB(1,PART.POS-1))).INTO(PARTS); |
|||
PART.SETPOS(1); |
|||
END ELSE BEGIN |
|||
PART.PUTCHAR(CH); |
|||
END; |
|||
END; |
|||
NEW ITEM(COPY(PART.SUB(1,PART.POS-1))).INTO(PARTS); |
|||
SPLIT :- PARTS; |
|||
END SPLIT; |
|||
TEXT EXAMPLE; |
|||
REF(HEAD) RESULT; |
|||
REF(ITEM) PART; |
|||
INTEGER NO; |
|||
FOR EXAMPLE :- "ONE^|UNO||THREE^^^^|FOUR^^^|^CUATRO|" DO |
|||
BEGIN |
|||
OUTTEXT("INPUT: '"); |
|||
OUTTEXT(EXAMPLE); |
|||
OUTTEXT("'"); |
|||
OUTIMAGE; |
|||
RESULT :- SPLIT(EXAMPLE, '|', '^'); |
|||
PART :- RESULT.FIRST; |
|||
NO := 0; |
|||
WHILE PART =/= NONE DO |
|||
BEGIN |
|||
NO := NO + 1; |
|||
OUTTEXT("PART"); |
|||
OUTINT(NO, 0); |
|||
OUTTEXT(": '"); |
|||
OUTTEXT(PART.TXT); |
|||
OUTTEXT("'"); |
|||
OUTIMAGE; |
|||
PART :- PART.SUC; |
|||
END; |
|||
END; |
|||
END. |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
INPUT: 'ONE^|UNO||THREE^^^^|FOUR^^^|^CUATRO|' |
|||
PART1: 'ONE|UNO' |
|||
PART2: '' |
|||
PART3: 'THREE^^' |
|||
PART4: 'FOUR^|CUATRO' |
|||
PART5: '' |
|||
</pre> |
|||
=={{header|Sidef}}== |
=={{header|Sidef}}== |
||
{{trans|Perl}} |
{{trans|Perl}} |