Forum: D Programlama Dili RSS
Metin Bölme'yle ilgili bir soru(n)
Abdullah #1
Üye Ağu 2015 tarihinden beri · 65 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Metin Bölme'yle ilgili bir soru(n)
abc "d e f g" 12 gibi bir metni .split() kullanarak bölmek istiyorum. Ama metnin hem boşluklara hemde " " göre ayrılması gerekiyor, şunun gibi:

writeln(metin);

==["abc", "d e f g", "12"]

Aklımdaki senaryo; .split'le boşluklara göre ayırmadan .indexOf'la " " ayırmak. Nasıl yapabilirim?
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4644 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bunun kolay yolunu bilmiyorum. Ben olsam std.algorithm.findSplit veya std.algorithm.splitter gibi şeyler kullanırdım.

Ali
Avatar
Salih Dinçer #3
Üye Ock 2012 tarihinden beri · 1926 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bu sorunun (multi-pattern) kolay bir çözümü std.regex modülünde mevcut:
import std.stdio, std.regex;
 
void main() {
    string metin =`Verdiğim yanıtı, Yusuf İzzet Paşa, toplantıda bulunanlara `~
    `bildirdiği zaman Reşit Bey ayağa kalkarak, Beyler! Bu yanıt, "göğsünüzü `~
    `kapayın!" demektir. Biliyorsunuz ki, askerlerin göğüslerinin kapalı `~
    `bulunması sıkı düzen ereğidir. demiş. Reşit Bey'in "Başkan bizi askerce`~
    `sıkıdüzen altına almak istiyor" demek istediği anlaşılıyor. "Nutuk`~"\n" ~
    `22 Aralık 1920 günü"`;
    
    // multi-pattern regex example (package.d 407. satır)
    auto multi = regex([`\w+`, `"[^"]*"`]);
    foreach (m; metin.matchAll(multi)) {
        m.hit.writeln();
    }
}
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Abdullah #4
Üye Ağu 2015 tarihinden beri · 65 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Red diliyle tırnak işaretlerinin arasındaki boşlukları farklı bir sembolle değiştirdim, o bölümde boşluk kalmadığı için tek parça olarak göründü, işlemden sonra geri boşluklu hâline çevirdim.

Regex konusunda iyi değilim, örnekteki multipattern neresi?
Avatar
Salih Dinçer #5
Üye Ock 2012 tarihinden beri · 1926 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bahsettiğin 3 aşamalı değişim ilk akla gelen zihin algoritması ama bu tür şeyler ne kadar optimum tartışılır. Regular Expression'lar hem hızlı hem de esnek olabiliyorlar,  özellikle de D'de :)

Çoklu deseni (multi-patern) virgül ile ayrırarak şu şekilde uyarladım: [`\w+`, `"[^"]*"`]
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
Salih Dinçer #6
Üye Ock 2012 tarihinden beri · 1926 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konuyla alakalı bir site ile karşılaştım:

https://regexr.com/

Benim gibi Regular Expression'ları sevenlerdenseniz hoşunuza gidecek!
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Abdullah #7
Üye Ağu 2015 tarihinden beri · 65 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Red'in parse'yla ilgileniyorum, o regex'den sayılır mı bilmiyorum. Yapacağım iş(ler) için çok daha kullanışlı geldi, teşekkürler
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2018-02-24, 10:00:29 (UTC -08:00)