2016-12-15 4 views
3

Ich habe eine einzelne Zeichenkette (das Ergebnis des Lesens in einem Textabsatz), die ich in ein Array von Wörtern aufteilen möchte. Ich würde die Saite auf jedem Platz aufteilen. Das scheint so, als sollte es einfach sein, aber ich kann keinen Weg finden, dies zu erreichen.APL/APLX - Teilen einer Zeichenkette

Es ist erwähnenswert, dass ich APLX verwende, also habe ich die Möglichkeit, eine Ruby-Funktion zu importieren, aber ich würde lieber bei APL bleiben.

Antwort

5

Es gibt viele verschiedene Möglichkeiten, dies anzugehen. Am häufigsten verwende ich die folgende dfn in Dyalog APL:

penclose←{⎕ML←3 ⋄ ⍺←↑,⍵ ⋄ (~⍵∊⍺)⊂,⍵ } ⍝ separator as ⍺ or ⍵[1] 

Ich bin nicht sicher, ob APLX DFNS hat, so eine "traditionelle" Art wäre:

∇ R←penclose R;a 
    ⍝ Partitioned enclose of text vector with separator in R[1] 
    ⍝ ⎕ML←3 ⍝ Dyalog-specific to make ⊂ APL2-compatible... 
a←1↑R ⋄ R←(~R∊a)⊂R 
∇ 
+0

dies funktionierte wunderbar, danke – wptreanor

+0

Was macht der Komma-Operator in Ihrer APLX-Definition? In meinen Experimenten mit GNU APL scheint es zu genügen, 'R ← (~ Rεa) ⊂R' –

+0

Danke für die Nachfrage! Es war als eine Sicherheitsmaßnahme gegen den RANK ERROR gedacht, den Sie durch das Aufrufen von 'penclose''oder' penclose'x'' hätten, die nicht plausibel sind, aber eher als Folge von 'penclose bool/string' - aber während der dfn sicher war, hat meine übersetzung in den traditionellen stil nicht richtig dafür gesorgt. Ich habe es jetzt behoben. – MBaas

Verwandte Themen