में अक्षरों को बदलें, मैं पिछले 4 को स्ट्रिंग में * के साथ सभी वर्णों को प्रतिस्थापित करने की कोशिश कर रहा हूं।
उद्देश्य-सी में एनएसएसटींग कक्षा replaceStringWithCharactersInRange: withString:
में एक विधि है जहां मैं इसे (0,[string length]-4)
रेंज @"*"
के साथ दे दूंगा। यह वही करता है: 123456789 एबीसीडी * एबीसीडी में संशोधित किया गया है जबकि मैं ******** एबीसीडी बनाना चाहता हूं। मैं समझता हूं कि यह स्ट्रिंग ऑब्जेक्ट के साथ निर्दिष्ट रेंज को प्रतिस्थापित करता है। इसे कैसे पूरा करें?NSString
NSString
उत्तर
NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\d" options:NSRegularExpressionCaseInsensitive error:&error];
NSString *newString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@"*"];
स्ट्रिंग का पहला भाग प्राप्त करने के लिए आप [theString substringToIndex:[theString length]-4]
का उपयोग कर सकते हैं और फिर दूसरे भाग के साथ [द स्ट्रिंग लम्बाई] -4 * के साथ गठबंधन कर सकते हैं। शायद उनकी यह करने के लिए एक आसान तरीका है ..
NSMutableString * str1 = [[NSMutableString alloc]initWithString:@"1234567890ABCD"];
[str1 replaceCharactersInRange:NSMakeRange(0, [str1 length] - 4) withString:@"*"];
NSLog(@"%@",str1);
यह
क्या आपने वास्तव में मेरे प्रश्न को पढ़ा या मेरे प्रश्न से उत्तर की प्रतिलिपि बनाई?मेरे द्वारा नीचे – ARC
क्षमा करें, मैं सही ढंग से प्रश्न को समझ नहीं पा रहा हूं – Vitaliy
NSMutableString * str1 = [[NSMutableString alloc] initWithString: @ "1234567890ABCD"]; एनएसआरेंज प्रतिस्थापन श्रेणी = एनएसएमकेरेंज (0, [str1 लंबाई] - 4); एनएसएमयूटेबलस्ट्रिंग * प्रतिस्थापन स्ट्रिंग = [[एनएसएमयूटेबलस्ट्रिंग आवंटन] init]; (uint i = 0; i
यह एक साधारण समस्या की तरह दिखता है ... पहले भाग स्ट्रिंग हो और संलग्न पिछले चार पात्रों के साथ इसे वापस काम करता है इसके लिए
-(NSString *)neededStringWithString:(NSString *)aString {
// if the string has less than or 4 characters, return nil
if([aString length] <= 4) {
return nil;
}
NSUInteger countOfCharToReplace = [aString length] - 4;
NSString *firstPart = @"*";
while(--countOfCharToReplace) {
firstPart = [firstPart stringByAppendingString:@"*"];
}
// range for the last four
NSRange lastFourRange = NSMakeRange([aString length] - 4, 4);
// return the combined string
return [firstPart stringByAppendingString:
[aString substringWithRange:lastFourRange]];
}
सबसे unintuitive हिस्सा कोको में अजीब पाशन के कुछ प्रकार के बिना दोहरा सितारों पैदा कर रही है:
यहाँ एक समारोह है कि जरूरत स्ट्रिंग रिटर्न है। stringByPaddingToLength:withString:startingAtIndex:
आप अपनी पसंद के किसी भी लम्बाई के एक दोहराई जाने वाली स्ट्रिंग बनाने की अनुमति देता है, तो एक बार आपको लगता है कि है, यहाँ एक सरल उपाय है:
NSInteger starUpTo = [string length] - 4;
if (starUpTo > 0) {
NSString *stars = [@"" stringByPaddingToLength:starUpTo withString:@"*" startingAtIndex:0];
return [string stringByReplacingCharactersInRange:NSMakeRange(0, starUpTo) withString:stars];
} else {
return string;
}
regexp iOS7 पर काम नहीं किया, लेकिन शायद यह मदद करता है:
- (NSString *)encryptString:(NSString *)pass {
NSMutableString *secret = [NSMutableString new];
for (int i=0; i<[pass length]; i++) {
[secret appendString:@"*"];
}
return secret;
}
अपने मामले में आपको पिछले 4 वर्णों को बदलने से रोकना चाहिए। बिट क्रूड, लेकिन काम पूरा हो गया
यह सब एक स्ट्रिंग वापस करता है जो * 'डी आउट' है। यह सवाल का जवाब कैसे देता है? (अंतिम 4 छोड़कर?) –
हम्म वास्तव में, पर्याप्त अच्छी तरह से पढ़ा नहीं था। (int i = 0; i <[pass length] - 4; i ++) { [गुप्त appendString: @ "*"]; } फिर अंतिम 4 वर्णों की प्रतिलिपि बनाने के लिए nsmakerange का उपयोग करें। लेकिन एक बेहतर जवाब पहले से ही है – CocoaChris
मुझे यकीन नहीं है कि स्वीकृत उत्तर क्यों स्वीकार किया गया था, क्योंकि यह केवल तभी काम करता है जब पिछले 4 लेकिन सबकुछ एक अंक है। यहाँ एक आसान तरीका है:
NSMutableString * str1 = [[NSMutableString alloc]initWithString:@"1234567890ABCD"];
NSRange r = NSMakeRange(0, [str1 length] - 4);
[str1 replaceCharactersInRange:r withString:[[NSString string] stringByPaddingToLength:r.length withString:@"*" startingAtIndex:0]];
NSLog(@"%@",str1);
- 1. NSString
- 2. nsstring
- 3. NSString
- 4. NSString
- 5. NSString
- 6. NSString
- 7. NSString
- 8. विशिष्ट NSString
- 9. एक NSString
- 10. एक NSString
- 11. कैसे NSString
- 12. NSString NSDate
- 13. आईओएस JSON NSString पार्स
- 14. समझौता NSString तुलना
- 15. स्प्लिट NSString व्हाइटस्पेस
- 16. UIWebview में NSString
- 17. NSString यूनिकोड बराबर
- 18. NSDictionary को NSString
- 19. NSString पार्स करने
- 20. NSString stringWithFormat प्रतिशत चिह्न
- 21. NSKeyedArchiver से NSString
- 22. NSArray और NSString
- 23. NSString आवंटन और आरंभ
- 24. फ़ाइल नाम NSString अंतरिक्ष
- 25. बाइट सरणी से NSString
- 26. एक char को NSString
- 27. आहरण NSString drawInRect
- 28. उद्देश्य सी - NSString से कास्टिंग
- 29. NSString के साथ उदाहरण चर
- 30. NSData कन्वर्ट हेक्स NSString में
काम नहीं करता, स्ट्रिंग द्वारा * – ARC
कोशिश 'प्रतिस्थापित हो जाता है @" \ d + "' 'अपने regularExpressionWithPattern के रूप में:' तर्क। मैंने इस रेगेक्स परीक्षक (http://regexpal.com/) पर \\ d + 'की कोशिश की, और यह असफल रहा, लेकिन' \ d + 'काम किया। –
इसे फिक्स्ड। पैटर्न में \\ d + के साथ \\ d + को प्रतिस्थापित करें। बस याद रखें कि नियमित अभिव्यक्तियों को आईओएस 4 या बाद में आवश्यकता होती है। यदि आपको आईओएस 3 में काम करने की ज़रूरत है, तो आपको हमें एनएसएससीनर – Lefteris