NSString से सभी व्हाट्सएप को हटा दें


134

मैं एक में सफेद रिक्त स्थान से छुटकारा पाने की कोशिश कर रहा हूं NSString, लेकिन मैंने जिन तरीकों की कोशिश की है उनमें से कोई भी काम नहीं किया है।

मेरे पास है "this is a test"और मैं पाना चाहता हूं "thisisatest"

मैंने उपयोग किया है whitespaceCharacterSet, जो कि सफेद स्थानों को खत्म करने वाला है।

NSString *search = [searchbar.text stringByTrimmingCharactersInSet:
                           [NSCharacterSet whitespaceCharacterSet]];

लेकिन मैं रिक्त स्थान के साथ एक ही स्ट्रिंग प्राप्त करता रहा। कोई विचार?


2
एक सरल तरीका नहीं है, लेकिन इस लिंक के महान जवाब हैं - stackoverflow.com/questions/758212/…
कॉफी

2
@ एडेल लेकिन, कोई भी स्वीकृत उत्तर =)
अल्मास आदिलबेक

जवाबों:


303

stringByTrimmingCharactersInSet केवल स्ट्रिंग के आरंभ और अंत से वर्ण हटाता है, बीच में नहीं।

1) यदि आपको अपने स्ट्रिंग से केवल दिए गए चरित्र (अंतरिक्ष वर्ण कहें ) को हटाने की आवश्यकता है, तो उपयोग करें:

[yourString stringByReplacingOccurrencesOfString:@" " withString:@""]

2) यदि आपको वास्तव में वर्णों के एक सेट को हटाने की आवश्यकता है (अर्थात न केवल अंतरिक्ष वर्ण, बल्कि अंतरिक्ष, टैब, अटूट स्थान आदि जैसे कोई भी व्हाट्सएप चरित्र), तो आप अपने स्ट्रिंग whitespaceCharacterSetको एक स्ट्रिंग में फिर से शब्दों में शामिल होने का उपयोग करके विभाजित कर सकते हैं। :

NSArray* words = [yourString componentsSeparatedByCharactersInSet :[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSString* nospacestring = [words componentsJoinedByString:@""];

ध्यान दें कि इस अंतिम समाधान में हर व्हाट्सएप चरित्र और न केवल रिक्त स्थान को संभालने का लाभ है, लेकिन यह थोड़ा कम कुशल है कि ए stringByReplacingOccurrencesOfString:withString:। इसलिए यदि आपको वास्तव में केवल अंतरिक्ष चरित्र को हटाने की आवश्यकता है और सुनिश्चित करें कि आपके पास सादे स्थान के अलावा किसी अन्य व्हाट्सएप चरित्र का उपयोग नहीं होगा, तो पहली विधि का उपयोग करें।


उत्तम! आपका बहुत बहुत धन्यवाद!
iGatiTech

33

मैं इस तरह regex का उपयोग करना पसंद करता हूं:

NSString *myString = @"this is a test";
NSString *myNewString = [myString stringByReplacingOccurrencesOfString:@"\\s"
                                     withString:@""
                                        options:NSRegularExpressionSearch
                                          range:NSMakeRange(0, [myStringlength])];
 //myNewString will be @"thisisatest"

जीवन को और भी आसान बनाने के लिए आप खुद को NSString पर एक श्रेणी बना सकते हैं:

- (NSString *) removeAllWhitespace
{
    return [self stringByReplacingOccurrencesOfString:@"\\s" withString:@""
                                              options:NSRegularExpressionSearch
                                                range:NSMakeRange(0, [self length])];

}

यहाँ पर एक इकाई परीक्षण विधि भी है:

- (void) testRemoveAllWhitespace
{
    NSString *testResult = nil;

    NSArray *testStringsArray        = @[@""
                                         ,@"    "
                                         ,@"  basicTest    "
                                         ,@"  another Test \n"
                                         ,@"a b c d e f g"
                                         ,@"\n\tA\t\t \t \nB    \f  C \t  ,d,\ve   F\r\r\r"
                                         ,@"  landscape, portrait,     ,,,up_side-down   ;asdf;  lkjfasdf0qi4jr0213 ua;;;;af!@@##$$ %^^ & *  * ()+  +   "
                                         ];

    NSArray *expectedResultsArray   = @[@""
                                        ,@""
                                        ,@"basicTest"
                                        ,@"anotherTest"
                                        ,@"abcdefg"
                                        ,@"ABC,d,eF"
                                        ,@"landscape,portrait,,,,up_side-down;asdf;lkjfasdf0qi4jr0213ua;;;;af!@@##$$%^^&**()++"
                                        ];

    for (int i=0; i < [testStringsArray count]; i++)
    {
        testResult = [testStringsArray[i] removeAllWhitespace];
        STAssertTrue([testResult isEqualToString:expectedResultsArray[i]], @"Expected: \"%@\" to become: \"%@\", but result was \"%@\"",
                     testStringsArray[i], expectedResultsArray[i], testResult);
    }
}

2
अरे यार, मुझे यह पसंद है कि यूनिट टेस्ट व्यवसाय शामिल है। अब मैं न केवल एसओ से अपना कोड कॉपी-पेस्ट कर सकता हूं, बल्कि मैं उस कोड के लिए कॉपी-पेस्ट भी कर सकता हूं!
टायलरजम्स

13

आसान काम का उपयोग करना stringByReplacingOccurrencesOfString

NSString *search = [searchbar.text stringByReplacingOccurrencesOfString:@" " withString:@""];

1
हालांकि, सहमत हैं, केवल अगर आपको व्हाट्सएप के सेट की आवश्यकता नहीं है। मैं उस का उपयोग करने जा रहा था, लेकिन तब मुझे महसूस हुआ कि मेरे तार में नई-नई रेखाएँ हैं।
मोबिबॉब

7

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

NSString* yourString = [yourString stringByReplacingOccurrencesOfString:@"\u00a0" withString:@""];

yourStringवर्तमान फोन नंबर कब था।


यह एक टन की मदद की! मैं उस पर भी अड़ा रहा! दोस्त बहुत - बहुत धन्यवाद! : डी
रफ़ी

स्विफ्ट 3 के लिए आप उपयोग कर सकते हैंyourString.replacingOccurrences(of: "\u{00a0}", with: "")
ओखन ओबेबे

4

stringByReplacingOccurrencesOfString स्ट्रिंग को केवल प्रारंभ और अंत में सभी सफेद स्थान से बदल देगा

उपयोग

[YourString stringByTrimmingCharactersInSet:[NSCharacterSet  whitespaceAndNewlineCharacterSet]]

5
आप उपयोग करने के लिए कहते हैं, stringByReplacingOccurrencesOfStringलेकिन इसका एक उदाहरण देते हैं stringByTrimmingCharactersInSet?
फ्लेक्सीकोडर

4
- (NSString *)removeWhitespaces {
  return [[self componentsSeparatedByCharactersInSet:
                    [NSCharacterSet whitespaceCharacterSet]]
      componentsJoinedByString:@""];
}

हालांकि यह कोड समस्या को हल कर सकता है, लेकिन स्पष्टीकरण के कुछ शब्द भविष्य के पाठकों के लिए इस उत्तर को मूल्यवान बनाने के लिए एक लंबा रास्ता तय करेंगे।
थॉम

4

यह मेरे लिए सबसे अच्छा तरीका स्विफ्ट है

        let myString = "  ciao   \n              ciao     "
        var finalString = myString as NSString

        for character in myString{
        if character == " "{

            finalString = finalString.stringByReplacingOccurrencesOfString(" ", withString: "")

        }else{
            finalString = finalString.stringByReplacingOccurrencesOfString("\n", withString: "")

        }

    }
     println(finalString)

और परिणाम है: ciaociao

लेकिन चाल यह है!

 extension String {

    var NoWhiteSpace : String {

    var miaStringa = self as NSString

    if miaStringa.containsString(" "){

      miaStringa =  miaStringa.stringByReplacingOccurrencesOfString(" ", withString: "")
    }
        return miaStringa as String

    }
}

let myString = "Ciao   Ciao       Ciao".NoWhiteSpace  //CiaoCiaoCiao

4

नीचे मार्को का उपयोग करें और अंतरिक्ष को हटा दें।

#define TRIMWHITESPACE(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]

अन्य फ़ाइल कॉल में TRIM:

    NSString *strEmail;
    strEmail = TRIM(@"     this is the test.");

यह आपकी मदद करेगा ...


3

यह किसी भी स्थान को हटाने के लिए है, जब आप किसी पाठ क्षेत्र से पाठ प्राप्त कर रहे हैं, लेकिन यदि आप स्ट्रिंग के बीच का स्थान निकालना चाहते हैं तो आप उपयोग कर सकते हैं

xyz =[xyz.text stringByReplacingOccurrencesOfString:@" " withString:@""];

यह खाली स्थान को बिना स्थान के साथ बदल देगा और खाली क्षेत्र को नीचे की विधि द्वारा ध्यान रखा जाएगा:

searchbar.text=[searchbar.text stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];

-1
pStrTemp = [pStrTemp stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

कृपया, इस स्निपेट को करने और इसके प्रारूपण को ठीक करने के बारे में थोड़ा विस्तार से बताएं।
यूरी

-2

मैं दृढ़ता से सुझाव देता हूं कि इसे अपनी परियोजना में कहीं रखें:

extension String {
    func trim() -> String {
        return self.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
    }

    func trim(withSet: NSCharacterSet) -> String {
        return self.stringByTrimmingCharactersInSet(withSet)
    }
}

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