2010-02-02 14 views
17

एक हिब्रू स्ट्रिंग है जो एक संख्या के साथ शुरू होता है प्रदर्शित करने के लिए कोशिश कर रहा है के अंत में संख्या से पता चलता है, हमेशा की तरह तो स्ट्रिंग के अंत में संख्या प्रदर्शित करता है: 1. יום שישי בבוקרRTL लाइनों

लेकिन मैं संख्या की आवश्यकता पाठ के दाईं ओर प्रदर्शित होने के लिए-

उस पर कोई समाधान?

यह UILabel & के साथ होता है UITextField & UITextView

और बाईं ओर नंबर लिखने की कोशिश कर भी एक ही resault का उत्पादन।

UITextAlignment के संयोजन के साथ बजाना मदद नहीं करेगा।

+0

http://stackoverflow.com/questions/1553248/iphone-and-right-to-left-text देखें। दुर्भाग्य से, अब तक कोई जवाब नहीं है। – kennytm

+0

धन्यवाद लेकिन यह वही isuue नहीं है। – Tiger

+0

वाह, कितना अजीब! क्या होता है यदि आपके पास हिब्रू के बीच में कोई संख्या है, या स्ट्रिंग की शुरुआत में लेकिन अंतरिक्ष के बाद? – lawrence

उत्तर

0

यकीन नहीं वहाँ यह करने के लिए अधिक सजावटी रास्ता है, लेकिन आप कुछ इस तरह की कोशिश करना चाहते हो सकता है यदि:

NSString *test = @"12. just a teststring"; 
NSString *number = [test substringToIndex: [test rangeOfString: @" "].location]; 
NSString *text = [test substringFromIndex: [test rangeOfString: @" "].location]; 
test = [NSString stringWithFormat: @"%@ %@", text, number]; 
// test == "just a teststring 12." 
+0

बहुत बहुत धन्यवाद लेकिन यह मुद्दा नहीं है। इससे कोई फर्क नहीं पड़ता कि मैं इसे ऑर्डर करने का प्रयास कैसे करूंगा। स्क्रीन पर हेब्रू डिस्प्ले के साथ कुछ भी। परीक्षा के लिए: 1. יום שישי בבוקר और: י .1 .יום שישי בבוקר स्क्रीन पर उसी तरह प्रदर्शित किया जाएगा – Tiger

22

आप UILabel पर किसी भी सेटिंग को परिवर्तित करने से ठीक पहले यूनिकोड 0x200F साथ चरित्र डाल की जरूरत नहीं है आपकी स्ट्रिंग यही कारण है:

यूनिकोड में कई पात्रों की एक विशिष्ट दिशात्मकता होती है, जो सिस्टम को यह जानने की सुविधा देता है कि एलटीआर, जैसे कि سلام। अनुच्छेद आमतौर पर अपने पहले चरित्र की दिशा का उपयोग करता है। यही कारण है कि संख्या के बिना आपकी स्ट्रिंग को दाएं से बाएं से स्वचालित रूप से टाइप किया गया है।

अब संख्याओं की तरह कुछ पात्रों में "कमजोर" दिशात्मकता है, इसलिए वे मूल रूप से अपने आस-पास के बारे में लेते हैं। जब आप "1. בבוקר" टाइप करते हैं, तो सिस्टम पहले 1 को देखता है, इसलिए सामान्य एलटीआर दिशा लेता है। संरेखण को बदलने से मदद नहीं मिलेगी, क्योंकि यह पूरे पाठ को दाएं या केंद्र में बदल देता है।

इस समस्या को हल करने के लिए, यूनिकोड में दो मार्कर वर्ण हैं (एलटीआर: 0x200E, आरटीएल: 200 एफ)। ये अदृश्य हैं, लेकिन दिशात्मकता को निर्देशित करते हैं। इसलिए जब "1. בבוקר" है ...

  1. בבוקר

अगर आप टाइप "# x200F" + "1. בבוקר" इसे इस तरह प्रदर्शित होगा:

1। בבוקר

+0

क्या हम किसी भी तरह एक UITextView में आरटीएल और एलटीआर मिश्रण कर सकते हैं? ऐसा लगता है कि केवल पहला मार्कर कैरेक्टर (एलटीआर या आरटीएल) पार्स किया गया है, इसलिए मैं एक टेक्स्ट नहीं दिखा सकता हूं जिसे लिखित द्विपक्षीय लिखा गया है (एलटीआर में एक पंक्ति, आरटीएल में दूसरी पंक्ति, और फिर एलटीआर में थिर्स) – konradowy

+0

धन्यवाद आप, इसने मेरी समस्या हल की, लेकिन आपको यह जानकारी कहां से मिली, मैंने आपकी पोस्ट को तब तक खोजा जब तक कि मुझे आपकी पोस्ट नहीं मिली। – DeyaEldeen

+0

धन्यवाद, इसने वास्तव में मुझे एक बग को हल करने में मदद की है जिसे मैंने बहुत लंबा खर्च किया है। अब मैं 20+ टैब बंद कर सकता हूं ;-) – adnan

15

बिल्डिंग मो महान जवाब पर:

इस कोड Obj सी है:

NSString *RTFstr = "1. בבוקר"; //This could be any right-to-left string 
NSString *directionalString = [@"\u200F" stringByAppendingString:[note text]]; 
[someUITextView setString:directionalString]; 

और यह वास्तव में काम करता है ...

+0

स्ट्रिंग के सामने इस कोड को सम्मिलित करना मेरे लिए काम नहीं करता था। –

6

मैं एक अलग समस्या थी लेकिन मो के जवाब मुझे सुराग दिया।

मैं आरटीएल दिशा ("dcba") में प्रदर्शित एक एलटीआर पाठ ("abcd") प्राप्त करना चाहता था बिना स्ट्रिंग रिवर्सिंग के। \u202E और \u202C के बीच स्ट्रिंग को बंद करने से चाल चलती है।

http://www.iamcal.com/understanding-bidirectional-text/

+0

यह पूरी तरह से काम किया –

5

स्विफ्ट किसी:

मैं भी निम्नलिखित पृष्ठ पढ़ने के रूप में यह इन सभी यूनिकोड जादू का एक बहुत अच्छा विवरण देता है की सलाह देते हैं?

extension String { 
    func stringByForcingWritingDirectionLTR() -> String { 
     return "\u{200E}".stringByAppendingString(self) 
    } 

    func stringByForcingWritingDirectionRTL() -> String { 
     return "\u{200F}".stringByAppendingString(self) 
    } 
} 
+0

यह समाधान काम नहीं किया – JAHelia

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