2016-07-29 19 views
2

Ich habe diese SaiteWie isoliert man nicht englische Wörter durch Leerzeichen in Lua?

"Hello there, this is some line-aa." 

, wie es so in ein Array zu schneiden?

Hello 
there, 
this 
is 
some 
line-aa. 

das ist, was ich bisher versucht

function sliceSpaces(arg) 
    local list = {} 
    for k in arg:gmatch("%w+") do 
    print(k) 
    table.insert(list, k) 
    end 
    return list 
end 

local sentence = "مرحبا يا اخوتي" 
print("sliceSpaces") 
print(sliceSpaces(sentence)) 

Dieser Code funktioniert für englischen Text, aber nicht für arabicum, wie kann ich es auch für arabisches funktioniert?

Antwort

2

Lua Strings sind Sequenzen von Bytes, keine Unicode-Zeichen. Das Muster %w entspricht alphanumerischen Zeichen, es gilt jedoch nur für ASCII.

Verwenden Sie stattdessen %S einen Nicht-Leerzeichen übereinstimmen:

for k in arg:gmatch("%S+") do 
+0

gearbeitet, was bedeutet das +? – DeyaEldeen

+0

@DeyaEldeen Ja, da '+' mit einem oder mehreren übereinstimmt. Beachten Sie jedoch, dass ein arabisches Zeichen abhängig von der Codierung tatsächlich aus zwei oder mehr Bytes besteht. –