我试图用*替换字符串中除了最后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