2016-12-15 6 views
3

У меня есть одна строка (результат чтения в абзаце текста), который я хотел бы разбить на массив слов. Я бы разделил строку на каждое пространство. Кажется, это должно быть просто, но я не могу найти способ сделать это.APL/APLX - Разделение строки

Стоит отметить, что я использую APLX, поэтому у меня есть возможность импортировать функцию Ruby, но я бы скорее придерживался APL.

ответ

5

Существует много разных способов решения этой проблемы. Чаще всего я использую следующий DFN в Dyalog APL:

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

Я не уверен, есть ли APLX dfns, поэтому более «традиционный» стиль будет:

∇ 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

это работало прекрасно, спасибо – wptreanor

+0

В определении APLX, что делает оператор запятой? В моих экспериментах с GNU APL, кажется, достаточно сделать 'R ← (~ Rεa) ⊂R' –

+0

Спасибо за вопрос! Он был предназначен как мера безопасности в отношении RANK ERROR, которую вы могли бы вызвать в результате вызова «penclose» или «penclose'x», которые не являются правдоподобными, но более вероятно, в результате «penclose bool/string» - но в то время как dfn был в безопасности, мой перевод в традиционный стиль не позаботился об этом. Я исправил это сейчас. – MBaas

 Смежные вопросы

  • Нет связанных вопросов^_^