এনএসআরিকে এনএসএসআরটিংকে উদ্দেশ্য-সি তে রূপান্তর করুন


185

আমি কিভাবে একটি রূপান্তর করতে হতাশ করছি NSArray [@"Apple", @"Pear ", 323, @"Orange"] একটি স্ট্রিং উদ্দেশ্য সি



47
@ਬੇেলিলিয়াম এই প্রশ্নটি আমার প্রশ্নের দু'বছর পরে জিজ্ঞাসা করা হয়েছিল ?
আলেক্সিয়োর্ক

উত্তর:


534
NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];

1
এটি কি [অ্যারে বর্ণনা] কল করার মতো একই কাজটি সম্পাদন করবে না?
টেকজেন

9
@ টেকজেন - না, কারণ নিউলাইনগুলি [array description]এবং বাইরের প্রথম বন্ধনী সন্নিবেশ করানো হয়েছে।
ডেভ দেলং

এটি নির্বাচিত উত্তর হওয়া উচিত!
পিক্সেলফ্রিয়াক

56
কেবল এখানে নিশ্চিত হতে চান, তবে NSString * myString = [array componentsJoinedByString:@""];এটির জন্য কি গ্রহণযোগ্য বিকল্প?
মিক ম্যাককালাম

10
@ 0x7fffffff: অ্যারেতে কেবল "বেসিক" টাইপ থাকলে এটি সমতুল্য। জটিল ধরণের জন্য, এটি তাদের হিসাবে আরও শক্তিশালী করবে <ClassName: InstanceAddress>valueForKeyএটা প্রতিটি আইটেমের জন্য নির্দিষ্ট সম্পত্তি উদ্ধার করে তোলে। এক্ষেত্রে , descriptionএমন কোনও NSString *সম্পত্তি NSObjectযাঁর গ্রাহককে তার সাবক্লাস দ্বারা ওভাররাইড করা যায়।
jweyrich

32

একটি পদ্ধতির অ্যারের মাধ্যমে পুনরাবৃত্তি হবে, descriptionপ্রতিটি আইটেমটিতে বার্তা কল :

NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
    [result appendString:[obj description]];
}
NSLog(@"The concatenated string is %@", result);

আর একটি পদ্ধতি হ'ল প্রতিটি আইটেমের শ্রেণির উপর ভিত্তি করে কিছু করা:

NSMutableString * result = [[NSMutableString alloc] init];
for (NSObject * obj in array)
{
    if ([obj isKindOfClass:[NSNumber class]])
    {
        // append something
    }
    else
    {
        [result appendString:[obj description]];
    }
}
NSLog(@"The concatenated string is %@", result);

আপনি যদি কমা এবং অন্যান্য বহিরাগত তথ্য চান, আপনি কেবল এটি করতে পারেন:

NSString * result = [array description];

প্রতি রূপান্তর এটি প্রথম আরো দক্ষ স্ট্রিং সব উপাদানের (সম্ভবত ব্যবহার হতে পারে অ্যারে অনেক উপাদান থাকে -descriptionযে পরে) এবং তাদের CONCAT ব্যবহার -componentsJoinedByString:সঙ্গে @""প্যারামিটার হিসাবে।
জর্জি স্কলি

আপনার কেবলমাত্র ডিবাগিং না করা হলে ডেভ ডেলংয়ের দ্বারা আমি এই পদ্ধতির সাথে যাব।
টেকজেন

17

আমি মনে করি সঞ্জয়ের উত্তর প্রায় ছিল তবে আমি এটি এইভাবে ব্যবহার করেছি

NSArray *myArray = [[NSArray alloc] initWithObjects:@"Hello",@"World", nil];
NSString *greeting = [myArray componentsJoinedByString:@" "];
NSLog(@"%@",greeting);

আউটপুট:

2015-01-25 08:47:14.830 StringTest[11639:394302] Hello World

যেমনটি সঞ্জয় ইঙ্গিত করেছিলেন - আমি এনএসআর্রে থেকে পদ্ধতিযুক্ত উপাদানসমূহ জয়ডবিস্ট্রিং ব্যবহার করেছি যা যোগদান করে এবং আপনাকে এনএসএসস্ট্রিং ফিরিয়ে দেয়

বিটিডাব্লু এনএসএসআরটিংয়ের বিপরীত পদ্ধতির উপাদানগুলি সেপ্রেটেডবাইস্ট্রিং রয়েছে যা বিভাজন করে এবং আপনাকে এনএসআরিকে ফিরে দেয় ।


10

আমি সম্প্রতি অবজেক্টিভ-সি স্ট্রিংয়ের জন্য একটি দুর্দান্ত টিউটোরিয়াল পেয়েছি:

http://ios-blog.co.uk/tutorials/objective-c-strings-a-guide-for-beginners/

এবং আমি ভেবেছিলাম এটি সম্ভবত আগ্রহী:

আপনি যদি স্ট্রিংটিকে অ্যারেতে বিভক্ত করতে চান তবে এটি অর্জনের জন্য উপাদানগুলি সেপ্রেটেডবাইস্ট্রিং নামে একটি পদ্ধতি ব্যবহার করুন:

NSString *yourString = @"This is a test string";
    NSArray *yourWords = [myString componentsSeparatedByString:@" "];

    // yourWords is now: [@"This", @"is", @"a", @"test", @"string"]

আপনার যদি বেশ কয়েকটি ভিন্ন চরিত্রের সেটগুলিতে বিভক্ত হওয়া প্রয়োজন হয় তবে এনএসএসআরটিংয়ের উপাদানগুলি সেপ্রেটেডবাইচার্যাক্টরসআইনসেট ব্যবহার করুন:

NSString *yourString = @"Foo-bar/iOS-Blog";
NSArray *yourWords = [myString componentsSeparatedByCharactersInSet:
                  [NSCharacterSet characterSetWithCharactersInString:@"-/"]
                ];

// yourWords is now: [@"Foo", @"bar", @"iOS", @"Blog"]

তবে নোট করুন যে বিভাজক স্ট্রিং ফাঁকা হতে পারে না। যদি আপনার স্ট্রিংটির পৃথক অক্ষরে আলাদা করতে হয় তবে কেবল স্ট্রিংয়ের দৈর্ঘ্যটি লুপ করুন এবং প্রতিটি চরকে একটি নতুন স্ট্রিংয়ে রূপান্তর করুন:

NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[myString length]];
for (int i=0; i < [myString length]; i++) {
    NSString *ichar  = [NSString stringWithFormat:@"%c", [myString characterAtIndex:i]];
    [characters addObject:ichar];
}

9
NSString * str = [componentsJoinedByString:@""];

এবং আপনি dic বা একাধিক অ্যারে তারপর বেলো ব্যবহার করা হয়

NSString * result = [[array valueForKey:@"description"] componentsJoinedByString:@""];   

1
NSArray *array = [NSArray arrayWithObjects:@"One",@"Two",@"Three", nil];
NSString *stringFromArray = [array componentsJoinedByString:@" "];

প্রথম লাইন বস্তুর সাহায্যে একটি অ্যারের সূচনা করে। দ্বিতীয় রেখা "" র ভিতরে স্ট্রিং যুক্ত করে সেই অ্যারের সমস্ত উপাদানগুলিতে যোগদান করে এবং একটি স্ট্রিং প্রদান করে।


এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে সে সম্পর্কে অতিরিক্ত প্রসঙ্গ সরবরাহ করে।
ডোনাল্ড ডাক

আন্তরিকভাবে আপনার পরামর্শের জন্য আপনাকে ধন্যবাদ!
আবদুলআজিজ রুস্তম ওগলি

1

উদ্দেশ্য সি সমাধান

NSArray * array = @[@"1", @"2", @"3"];
NSString * stringFromArray = [[array valueForKey:@"description"] componentsJoinedByString:@"-"];   // "1-2-3"

যারা এর সমাধান খুঁজছেন Swift

যদি অ্যারেটিতে স্ট্রিং থাকে তবে আপনি স্ট্রিংয়ের যোগদানের পদ্ধতিটি ব্যবহার করতে পারেন:

var array = ["1", "2", "3"]

let stringFromArray = "-".join(array) // "1-2-3"

সুইফট 2 এ:

var array = ["1", "2", "3"]

let stringFromArray = array.joinWithSeparator("-") // "1-2-3"

সুইফট 3 এবং 4 এ

var array = ["1", "2", "3"]

let stringFromArray = array.joined(separator: "-") // "1-2-3"

-1

আমার জানা উপায়টি সহজ।

var NSArray_variable = NSArray_Object[n]
var stringVarible = NSArray_variable as String

nসুইট ভাষায় এটি অ্যারের অভ্যন্তরীণ অবস্থান। এটি উদ্দেশ্য সিতে কাজ করতে পারে


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.