2017-03-28 26 views
12

Üç dilde (C++, Python ve Golang) tutarlı olması için katlanır duruma geçmeye çalışıyorum çünkü bir dize, dil ne olursa olsun kaydedilenle eşleşip eşleşmediğini kontrol edebilmem gerekiyor.Golang karmaşık katlama grüßen

Örnek bir problemli kelime, "GRÜSSEN" harfli olan "grüßen" Almanca sözcüğüdür ('ß', 'SS' olarak iki karakter olur). :: yerel text conversion docs

  • Python 3 boost kullanılarak iyi çalışıyor ++

    ben eksik veya unicode's documentation sonunda bu hata golang metin dönüşüm tüm kullanımlar için geçerli olmadığını Bunu yapmanın bir yolu var mı? Eğer öyleyse, cgo'da yazmaktan başka, katlama için seçeneklerim nelerdir?

  • +0

    Verilen golang, kapitalizasyon işlevini “func to (_case int, r rune, caseRange [] CaseRange) rune” olarak uygular {'hatta birden çok kuralı döndürmek bile mümkündür. – zerkms

    +0

    Evet, buna çalışıyorum. Bir "rune" nun katlanma/kapitalizasyon yoluyla ikiye dönüşebileceği diller vardır, bu yüzden golang'da böyle bir şeyin üstesinden gelmenin bir yolu olmalıdır. –

    +1

    Bir sorun yaratırsanız, lütfen buraya bir bağlantı gönderebilirsiniz (düzgün bir şekilde dönüştürmek için bir şey olduğunu düşünmediğimden) – zerkms

    cevap

    6

    İleri (Unicode etkinleştirilmiş) metin işleme git stdlib parçası değil, golang.org/x/text/ umbrella altında üçüncü taraf paketleri ¹ ve bir dizi ("mübarek") biçiminde bulunmaktadır.

    Shawn kendisi tarafından anladım olarak, bir

    import (
        "golang.org/x/text/cases" 
    ) 
    
    c := cases.Fold() 
    c.String("grüßen") 
    

    geri "grüssen" almak için yapabilirsiniz. Yani ¹


    ne olursa olsun stdlib sevk edilir, belli işlevleri mevcut değildi veya eksik olduğunu ya da API'leri akı vb idi sevk edildi 1 Go Go 1 compatibility promise, ve zamanda tabidir çünkü Böylece, bu tür bitler olgunlaşabilmeleri için çekirdeğin 'unu dışarıda bırakmışlardır.

    +0

    c.String ("grüßen") aslında GRÜSSEN değil grüssen'i döndürür. –

    +0

    @ shawn-blakesley, düzeltme için teşekkürler! – kostix