我正在检查字符串的第一个字母是0,如果它是删除它并再次调用方法检查是否仍然是0.我已经调试了这个似乎当它完成数字而没有0时,它会去向后。代码:
-(NSString *)deleteZerosOnFirst:(NSString *)card
{
NSString *firstLetter = [card substringToIndex:1];
if ([firstLetter isEqualToString:@"0"]) {
card = [card substringFromIndex:1];
[self deleteZerosOnFirst:card];
NSLog(@"CARD: %@", card);
return card;
}
else {
NSLog(@"CARD: %@", card);
return card;
}
}
答案 0 :(得分:3)
主要问题是您没有使用递归的结果。你自称的代码行应该这样说:
<?php
$koneksi = mysqli_connect('mysql.idhostinger.com','root','pw','db');
$result = mysqli_query($koneksi,'select * from posting');
while($row = mysqli_fetch_row($result)) {
for($x = 0; $x <= count($row); $x++) {
echo "<div style='background:green'>$row[$x]</div>";
}
}
?>
此外,您在执行NSLog之前调用了deleteZerosOnFirst。颠倒这两行的顺序。这至少会以正确的顺序为您提供调试输出。
答案 1 :(得分:3)
这是你的递归电话:
[self deleteZerosOnFirst:card];
这不会修改card
引用的字符串。它创建并返回一个新字符串。你忽略了返回的字符串。你想要这个:
card = [self deleteZerosOnFirst:card];
但这真的很简单:
@implementation NSString (withoutLeadingZeroes)
- (NSString *)withoutLeadingZeroes {
NSString *s = self;
while ([s hasPrefix:@"0"]) {
s = [s substringFromIndex:1];
}
return s;
}
@end