C # में सिंटैक्स होता है जो आपको एक स्ट्रिंग प्रारूप विनिर्देशक में तर्क सूचकांक निर्दिष्ट करने की अनुमति देता है, जैसे:
string message = string.Format("Hello, {0}. You are {1} years old. How does it feel to be {1}?", name, age);
आप एक से अधिक बार तर्कों का उपयोग कर सकते हैं और उन दलीलों को भी छोड़ सकते हैं जो उपयोग किए जाने से प्रदान की जाती हैं। एक अन्य प्रश्न में %[index]$[format]
, उदाहरण के लिए, C / C ++ के समान स्वरूपण का उल्लेख किया गया है %1$i
। मैं इस सिंटैक्स का पूरी तरह से सम्मान करने के लिए एनएसएसट्रिंग प्राप्त करने में सक्षम नहीं हूं , क्योंकि यह प्रारूप से तर्कों को छोड़ते समय अच्छा व्यवहार करता है । निम्न अपेक्षा के अनुरूप काम नहीं करता है (EXC_BAD_ACCESS क्योंकि यह age
पैरामीटर को NSObject * के रूप में मान्यता देने का प्रयास करता है ):
int age = 23;
NSString * name = @"Joe";
NSString * message = [NSString stringWithFormat:@"Age: %2$i", name, age];
स्थैतिक तर्कों का सम्मान केवल तभी किया जाता है जब प्रारूप से कोई लापता तर्क न हो (जो कि एक अजीब आवश्यकता लगती है):
NSString * message = [NSString stringWithFormat:@"Age: %2$i; Name: %1$@", name, age];
ये सभी कॉल OS X में ठीक से काम करते हैं:
printf("Age: %2$i", [name UTF8String], age);
printf("Age: %2$i %1$s", [name UTF8String], age);
क्या उद्देश्य-सी / कोको में एनएसएसट्रिंग का उपयोग करके इसे पूरा करने का एक तरीका है? यह स्थानीयकरण के उद्देश्यों के लिए उपयोगी होगा।