NSString से वर्ण निकालें?


95
NSString *myString = @"A B C D E F G";

मैं रिक्त स्थान निकालना चाहता हूं, इसलिए नया स्ट्रिंग "एबीसीडीईएफजी" होगा।

जवाबों:


280

आप उपयोग कर सकते हैं:

NSString *stringWithoutSpaces = [myString 
   stringByReplacingOccurrencesOfString:@" " withString:@""];

क्या आप लेगबिलिटी के लिए मोनोपॉज़ फॉन्ट में कोड स्निपेट्स को फॉर्मेट कर सकते हैं। वर्तमान में पहली तार को भेदना थोड़ा मुश्किल है
माइक अब्दुल्ला

4
ध्यान दें कि "घटना" दो आर के साथ वर्तनी है।

प्लस 256 smh तक पहुँचने की आशा में 1
विल वॉन Ullrich

यह केवल तभी काम करता है जब 'रिक्त स्थान' में ASCII मान = 32 (% 20) वर्णों का व्यवहार किया जाता है। सभी संभव सफेद-स्थान वाले चार्ट को हटाने के लिए नीचे जिम डोवी के समाधान का उपयोग करें।
लिनसस

80

यदि आप एक समय में एक से अधिक स्थान का समर्थन करना चाहते हैं, या किसी भी व्हाट्सएप का समर्थन करना चाहते हैं, तो आप यह कर सकते हैं:

NSString* noSpaces =
    [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
                           componentsJoinedByString:@""];

5
यह सामान्य उपयोग के लिए अधिक उपयोगी है।
mxg

मुझें यह पसंद है! मैं एक फोन नंबर में सभी विशेष चार को हटाना चाहता हूं और केवल अंक रखना चाहता हूं।
करीम

बहुत आसान: yourString = [yourString stringByTrimmingCharactersInSet: [NSCharacterSet व्हॉट्सएपस्पेसचरचरसेट]];
डैनियल

3
ट्रिमिंग केवल मिलान वर्ण हटाता है जब वे स्ट्रिंग की शुरुआत और अंत में होते हैं, इसलिए `ABCDEF` बन जाएगा A B C D E F
जिम डोवी

11

NSString से लिया गया

stringByReplacingOccurrencesOfString:withString:

एक नया स्ट्रिंग लौटाता है जिसमें रिसीवर में एक लक्ष्य स्ट्रिंग की सभी घटनाओं को दूसरे दिए गए स्ट्रिंग द्वारा बदल दिया जाता है।

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement

पैरामीटर

लक्ष्य

The string to replace.

प्रतिस्थापन

The string with which to replace target.

प्रतिलाभ की मात्रा

एक नया स्ट्रिंग जिसमें रिसीवर में लक्ष्य की सभी घटनाओं को प्रतिस्थापन द्वारा प्रतिस्थापित किया जाता है।


11

उपरोक्त सभी ठीक काम करेगा। लेकिन सही तरीका यह है:

yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

यह TRIM विधि की तरह काम करेगा। यह सभी फ्रंट और बैक स्पेस को हटा देगा।

धन्यवाद


7
नहींं, यह केवल स्ट्रिंग के प्रारंभ और अंत से रिक्त स्थान को निकालता है, अन्य वर्णों के बीच के रिक्त स्थान को नहीं।
जिम डोवी

@JimDovey मैंने अपनी टिप्पणी में पहले ही इस बात का उल्लेख किया है। # यह एक TRIM विधि की तरह काम करेगा। यह सभी मोर्चे और पीछे के स्थानों को हटा देगा। #
मितेश खत्री

2
@MiteshKhatri आप करते हैं, लेकिन यह अभी भी मूल समस्या को हल नहीं करता है, जो कि स्ट्रिंग के बीच में से सभी व्हाट्सएप को हटाने के लिए है, न कि केवल प्रमुख और अनुगामी व्हाट्सएप को।
जिम डोवी

नीचे दिए गए सभी रिक्त स्थान का उपयोग कोड के लिए @JimDovey: MyStr = [MyStr stringByReplacingOccurrencesOfString: @ "withString: @" "];
मितेश खत्री

1
यह अभी भी केवल ASCII अंतरिक्ष वर्णों को हटा देगा; शून्य-चौड़ाई वाले स्थान, यूनिकोड गैर-ब्रेकिंग स्पेस, न्यूलाइन्स, फॉर्म फीड, टैब, वर्टिकल टैब जैसी चीजें, और इसी तरह अभी भी स्ट्रिंग में बनी रहेंगी। इसलिए के अस्तित्व [NSCharacterSet whitespaceCharacterSet]और [NSCharacterSet whitespaceAndNewlineCharacterSet]
जिम डोवी

6

यदि स्ट्रिंग उत्परिवर्तनीय है , तो आप इस फ़ॉर्म का उपयोग करके इसे बदल सकते हैं:

[string replaceOccurrencesOfString:@" "
                        withString:@""
                           options:0
                             range:NSMakeRange(0, string.length)];

यदि आप परिणाम को इनपुट स्ट्रिंग के एक परिवर्तनशील उदाहरण के रूप में लेना चाहते हैं तो भी यह उपयोगी है:

NSMutableString * string = [concreteString mutableCopy];
[string replaceOccurrencesOfString:@" "
                        withString:@""
                           options:0
                             range:NSMakeRange(0, string.length)];

3

आप यह कोशिश कर सकते हैं

- (NSString *)stripRemoveSpaceFrom:(NSString *)str {
    while ([str rangeOfString:@"  "].location != NSNotFound) {
        str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
    }
    return str;
}

उम्मीद है इससे आपकी सहायता होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.