2012-09-02 15 views
6

में एक रूसी चरित्र ढूंढना मुझे यह देखना है कि NSString में कोई रूसी वर्ण मौजूद है या नहीं।एनएसएसटींग

मुझे लगता है कि के लिए निम्न कोड का उपयोग कर रहा:

NSCharacterSet * set = 
[[NSCharacterSet characterSetWithCharactersInString:@"БГДЁЖИЙЛПФХЦЧШЩЪЫЭЮЯ"] 
    invertedSet]; 

BOOL check = ([nameValue rangeOfCharacterFromSet:set].location == NSNotFound); 

return check; 

लेकिन यह हमेशा FALSE लौटा रहा है।

क्या कोई मुझे एक विचार दे सकता है कि मेरे कोड में क्या गलत है?

धन्यवाद

+0

कि डबल निषेध एक ओवरहेड का एक सा ... –

+3

@ H2CO3 डबल निषेध रूसी भाषा में आम है :) – dasblinkenlight

+0

@Rachit मुझे लगता है कि कुछ वर्ण रूसी वर्णमाला से गायब हैं: А, В, К, М, Н, О, Р, С, Т – Shmidt

उत्तर

3

वर्तमान में, अपनी हालत जांच करता है कि गैर-रूसी (तकनीकी, गैर सिरिलिक) वर्ण स्ट्रिंग से अनुपस्थित रहे, ऐसा नहीं है कि सिरिलिक वर्ण स्ट्रिंग में मौजूद हैं। आपका कोड केवल YES को उन तारों के लिए वापस कर देगा जो पूरी तरह से सिरिलिक वर्णों से बनाये गये हैं जिनके पास लैटिन वर्णमाला में समकक्ष चरित्र नहीं है।

इस तरह इस समस्या को दूर करने के लिए, उलट निकाल सकते हैं और जांच को उलटने,:

NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@"БГДЁЖИЙЛПФХЦЧШЩЪЫЬЭЮЯ"]; 

return [nameValue rangeOfCharacterFromSet:set].location != NSNotFound; 


आपकी सूची में मृदुल रोक Ь शामिल करने के लिए भूल गए हैं, यह एक तरह लग रहा है लोअर-केस b, लेकिन यह वही चरित्र नहीं है।

+0

आपकी मदद के लिए बहुत बहुत धन्यवाद! – Rachit

+0

@Shmidt यह एक गलत संपादन था: ओपी ने सभी रूसी पात्रों को छोड़ दिया जो कि लैटिन पात्रों के समान हैं, गलती से नहीं। – dasblinkenlight

+0

@dasblinkenlight मैंने उद्देश्य के बारे में पाठ में कुछ भी नहीं देखा, इसलिए मुझे लगता है कि यह एक गलती थी - कुछ रूसी पात्र लैटिन की तरह दिखते हैं लेकिन यह लैटिन नहीं है। पद का विषय केवल रूसी के बारे में कहता है, इसलिए कुछ उपयोगकर्ताओं को इस उत्तर से भ्रमित किया जा सकता है। वैसे भी मैंने उनके लिए अपना खुद का निर्माण किया। – Shmidt

4

मैं dasblinkenlight के जवाब के लिए इस्तेमाल किया, लेकिन मैं लोअरकेस वर्णों सहित पूर्ण रूसी वर्णमाला में शामिल हैं:

@interface NSString (Russian) 
- (BOOL)hasRussianCharacters; 
@end 
@implementation NSString (Russian) 
- (BOOL)hasRussianCharacters{ 
    NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@"абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"]; 
    return [self rangeOfCharacterFromSet:set].location != NSNotFound; 
} 
@end