我試圖用*替換字符串中除了最後4個字符以外的所有字符。
在objective-c中有NSString類replaceStringWithCharactersInRange: withString:
中的一個方法,我會給它的範圍爲(0,[string length]-4)
)和字符串@"*"
。這就是它的作用:123456789ABCD被修改爲* ABCD,而我正在尋找******** ABCD。 我知道它取代了我用字符串對象指定的範圍。如何做到這一點?替換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]
獲取字符串的第一部分,然後將[theString length] -4 *與第二部分組合。也許他們的是更簡單的方式來做到這一點..
NSMutableString * str1 = [[NSMutableString alloc]initWithString:@"1234567890ABCD"];
[str1 replaceCharactersInRange:NSMakeRange(0, [str1 length] - 4) withString:@"*"];
NSLog(@"%@",str1);
它的工作原理
您是否真的閱讀過我的問題或從我的問題中複製了答案?downvoted我 – ARC
對不起,我不明白這個問題 – Vitaliy
NSMutableString * str1 = [[NSMutableString alloc] initWithString:@「1234567890ABCD」]; NSRange replacementRange = NSMakeRange(0,[str1 length] - 4); NSMutableString * replacementString = [[NSMutableString alloc] init]; for(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]];
}
最直觀的部分可可創建重複明星沒有某種尷尬的循環中。 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;
}
的正則表達式沒有對iOS7工作,但也許這會有所幫助:
- (NSString *)encryptString:(NSString *)pass {
NSMutableString *secret = [NSMutableString new];
for (int i=0; i<[pass length]; i++) {
[secret appendString:@"*"];
}
return secret;
}
在你的情況下,你應該停止替換最後4個字符。位原油,但完成工作
所有這些都會返回一個*'d出來的字符串。這是如何回答這個問題的? (離開最後4?) –
確實,沒有讀得不夠好。 for(int i = 0; i <[pass length] - 4; i ++){secret appendString:@「*」]; } 然後使用nsmakerange複製最後4個字符。但更好的答案已經在那裏 – 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. Objective-C NSString字符替換
- 3. 將字符替換爲NSString
- 4. 在NSString中替換多組字符
- 5. 將一個NSString中的字符替換爲另一個NSString中的字符
- 6. 的NSString替換字符方法
- 7. 替換NSString中的'\'
- 8. 在JSON中替換換行符NSString
- 9. NSString中的換碼字符
- 10. 字符串替換沒有NSString的子字符串API
- 11. 替換NSString中的幾個不同的字符
- 12. 如何替換NSString中\ xa0字符的出現
- 13. Objective C - 替換NSString中的字符串部分?
- 14. NSString中的必需字符被替換爲編碼變量
- 15. 將nsstring中的多個字符替換爲其他多個字符
- 16. 如何從NSString中刪除/替換/顯示unicode字符
- 17. 如何從NSString中刪除字符並用空格替換?
- 18. python替換字符而不替換已替換的字符
- 19. 替換字符串中的變量替換錯誤的字符
- 20. 替換方法不是替換字符串中的字符
- 21. 在NSString的某個索引處替換一個字符
- 22. 替換Powershell中的'字符
- 23. 替換Scrapy中的字符
- 24. 替換Excel中的字符
- 25. 替換字符串中的\」
- 26. 替換字符串中的字符Java
- 27. Java - 替換字符串中的字符
- 28. 替換字符串中的字符
- 29. Swift - 替換字符串中的字符
- 30. c中的字符串替換字符#
不行的,字符串被通過* – ARC
嘗試'代替@ 「\ d +」'爲你的'regularExpressionWithPattern:'說法。我在[這個正則表達式測試程序](http://regexpal.com/)上試過'\\ d +',它失敗了,但'\ d +'工作。 –
修正了它。只需在模式中將\\ d +替換爲\\ d即可。請記住,正則表達式需要iOS 4或更高版本。如果你需要它在iOS 3中工作,你應該NSScanner – Lefteris