2012-06-15 12 views
9

मैं एक प्रोग्राम लिख रहा हूं जो पर्ल में दस्तावेज़ों के साथ काम करता है और कई दस्तावेजों में ä, ö, ü, é, etc (पूंजी और लोअरकेस दोनों) जैसे वर्ण हैं। मैं उन्हें एएससीआईआई समकक्ष a, o, u, e, etc के साथ बदलना चाहता हूं। मैं पर्ल में यह कैसे करूँगा?पर्ल में उनके एएससीआईआई समकक्षों को लहजे, उमोट्स इत्यादि के साथ अक्षरों को कैसे परिवर्तित करें?

समाधान मैं के बारे में सोचा में से एक कुंजी ऊमलायूट और उच्चारण पात्रों जा रहा है, और मूल्यों ASCII समकक्षों होने के साथ एक हैश के लिए है, लेकिन है कि मुझे है, जो मैं डॉन सभी ऊमलायूट और उच्चारण वर्णों की एक सूची करने की आवश्यकता है मेरे पास नहीं है, और यदि मैंने एक सूची बनाई है, तो मैं निश्चित रूप से कई लोगों को याद करूँगा क्योंकि मैं उन सभी संभावित पात्रों से अपरिचित हूं जिनमें उमोट्स, उच्चारण और अन्य विशिष्टताएं हो सकती हैं।

+2

उच्चारण हटाने की कोशिश करना लगभग हमेशा गलत काम है। मुझे लगता है कि आप चाहते हैं: [पर्ल में डायक्रिटिक के साथ स्ट्रिंग कैसे मिलान करें?] (Http://stackoverflow.com/q/7429964) – daxim

+1

यदि नहीं: [मैं पर्ल में ASCII के साथ यूनिकोड वर्णों को कैसे प्रतिस्थापित कर सकता हूं?] (Http: //stackoverflow.com/q/2309215) [मैं विस्तारित लैटिन वर्णों को उनके असंबद्ध ASCII समकक्षों में कैसे बदल सकता हूं?] (http://stackoverflow.com/q/450026) – daxim

+0

मुझे लगता है कि टेक्स्ट :: यूनिडकोड का पहला अनुच्छेद मॉड्यूल विवरण संभावित उपयोग मामलों को पर्याप्त रूप से परिभाषित करता है।) यह केवल collation के बारे में नहीं है। – raina77ow

उत्तर

23

सामान्य रूप से, यदि आप किसी समस्या के बारे में सोचते हैं जो निश्चित रूप से केवल आपका नहीं है, तो सीपीएएन पर पहले से ही एक समाधान है।) इस मामले में यह Text::Unidecode

use warnings; 
use strict; 
use utf8; 
use Text::Unidecode; 
print unidecode('ä, ö, ü, é'); # will print 'a, o, u, e' 
3

Text::Unidecode

कई अस्वीकरण देखें, लेकिन यह शायद तुम सिर्फ क्या जरूरत है अगर आप सिर्फ विशेषक के साथ लैटिन पाठ है।

0

मैं इस सबरूटीन किया कहा जाता है और मैं इसे माध्यम से प्रत्येक शब्द को खिलाने के। यह धीमा हो सकता है।

sub store_utf82_encoding{ 
##see file UTF8vowels.txt 
#converts UTF8 Euro vowels to nearest English equivant 

    my $name=$_[0]; 
    $name =~m/\x00c0/A/g; #Agrav 
    $name =~m/\x00c1/A/g; # Aacute 
    $name =~m/\x00c2/A/g; # Acap 
    $name =~m/\x00c3/A/g; # Atilde 
    $name =~m/\x00c4/A/g; # Auml 
    $name =~m/\x00c5/A/g; # Aring 
    $name =~m/\x00c6/AE/g; # AE 
    $name =~m/\x00c7/Ch/g; # Ccedilla 
    $name =~m/\x00c8/E/g; #Egrav 
    $name =~m/\x00c9/E/g; # Eacute 
    $name =~m/\x00ca/E/g; # Ecap 
    $name =~m/\x00cb/E/g; # Euml 
    $name =~m/\x00cc/I/g; # Igrav 
    $name =~m/\x00cd/I/g; # Iacut 
    $name =~m/\x00ce/I/g; # Icap 
    $name =~m/\x00cf/I/g; # Iuml 
    $name =~m/\x00d0/Th/g; #CapEth 
    $name =~m/\x00d1/NY/g; # Ntild 
    $name =~m/\x00d2/O/g; # Ograv 
    $name =~m/\x00d3/O/g; # Oacute 
    $name =~m/\x00d4/O/g; # Ocap 
    $name =~m/\x00d5/Th/g; # Otilde 
    $name =~m/\x00d6/O/g; # Ouml 
    $name =~m/\x00d8/O/g; # Ostroke 
    $name =~m/\x00d9/U/g; # Ugrav 
    $name =~m/\x00da/U/g; # Uacute 
    $name =~m/\x00db/U/g; # Ucap 
    $name =~m/\x00dc/U/g; # Uuml 
    $name =~m/\x00dd/Y/g; # Yacute 
    $name =~m/\x00de/Th/g; # CapThorn 
    $name =~m/\x00df/SS/g; # GermanUCss Ezette 
    $name =~m/\x00e0/a/g; # agrav 
    $name =~m/\x00e1/a/g; # aacute 
    $name =~m/\x00e2/a/g; # acap 
    $name =~m/\x00e3/a/g; # atilde 
    $name =~m/\x00e4/a/g; # auml 
    $name =~m/\x00e5/a/g; # aring 
    $name =~m/\x00e6/ae/g; # ae 
    $name =~m/\x00e7/ch/g; # ccedilla 
    $name =~m/\x00e8/e/g; # egrav 
    $name =~m/\x00e9/e/g; # eacute 
    $name =~m/\x00ea/e/g; # ecap 
    $name =~m/\x00eb/e/g; # euml 
    $name =~m/\x00ec/i/g; # igrav 
    $name =~m/\x00ed/i/g; # iacute 
    $name =~m/\x00ee/i/g; # icap 
    $name =~m/\x00ef/i/g; # iuml 
    $name =~m/\x00f0/th/g; # lowercase eth 
    $name =~m/\x00f1/ny/g; # ntilde 
    $name =~m/\x00f2/o/g; # ograv 
    $name =~m/\x00f3/o/g; # oacute 
    $name =~m/\x00f4/o/g; # ocap 
    $name =~m/\x00f5/th/g; # otilde 
    $name =~m/\x00f6/o/g; # ouml 
    $name =~m/\x00f8/o/g; # ostroke 
    $name =~m/\x00f9/u/g; # ugrav 
    $name =~m/\x00fa/u/g; # uacute 
    $name =~m/\x00fb/u/g; # ucap 
    $name =~m/\x00fc/u/g; # uuml 
    $name =~m/\x00fe/th/g; # lowercase thorn 
    $name =~m/\x00fd/y/g; # yacute 
    $name =~m/\x00ff/y/g; # yuml 

return $name; 

} #endsub store_utf82_encoding 
संबंधित मुद्दे

 संबंधित मुद्दे