أهلا،
أود أن أقترح طلب ميزة ، والذي أعمل عليه الآن في فرع جديد ، للوظيفة split(str, splitter; limit=0, keep=true)
.
وجدت نفسي أحاول استخدام الوظيفة بهذه الطريقة ، وما أتوقعه بطريقة ما هو ما يلي ،
julia> split("abcabcdabbcd", "b"; keep_splitter = true)
3-element Array{SubString{String},1}:
"a"
"bca"
"bcda"
"b"
"bcd"
هل يجب علي الاستمرار في العمل؟ هل سيكون تغيير جذري لبقية النظام البيئي؟
بعض الافكار:
keep_spliter
هو true
، فلا يجب أن يُحدث أي فرق سواء كان keep
(الذي يعني النتائج الفارغة) ، هو true
أو false
، لأنه لن تكون هناك نتائج فارغة على الإطلاق.readlines(file)
، أليس كذلك؟ في كل عنصر من المصفوفة لدينا '\n'
في النهاية.julia> split("abcabcdabbcd", "b"; keep_splitter = true, prepend = false)
3-element Array{SubString{String},1}:
"ab"
"cab"
"cdab"
"b"
"cd"
شكرا لك مقدما!
ملاحظة ، ربما يمكن إجراؤها بوظيفة أخرى لا أعرفها بعد
مرتبطة بوظيفة splitlines
محتملة (https://github.com/JuliaLang/julia/pull/20390) ، وبالوسيطة chomp
إلى readline
/ eachline
(https://github.com/JuliaLang/julia/pull/19944 ، https://github.com/JuliaLang/julia/pull/19944).
نسخة إلى: mpastell
لاحظ أن هناك طريقة أخرى للنظر إلى الكلمة الرئيسية الحالية keep
، ما تفعله حقًا هو أن تقول أنه يمكن تكرار الفاصل الخاص بك مرة واحدة أو أكثر ، أي لفه ضمنيًا في (...)+
باعتباره regex.
يظهر هذا أيضًا عند محاولة تقسيم سلاسل حالة الجمل:
foo = "ThisShouldBeSeparate"
split(foo, isuppercase)
5-element Array{SubString{String},1}:
""
"his"
"hould"
"e"
"eparate"
الحل هو استخدام محدد regex: split(foo, r"(?=[A-Z])")
لكن هذا أقل بديهية (ولم أكن لأحلها بدون مساعدة خارجية).
التعليق الأكثر فائدة
يظهر هذا أيضًا عند محاولة تقسيم سلاسل حالة الجمل:
الحل هو استخدام محدد regex:
split(foo, r"(?=[A-Z])")
لكن هذا أقل بديهية (ولم أكن لأحلها بدون مساعدة خارجية).