【问题标题】:How to remove starting 0's in uitextfield text in iphone sdk如何在 iphone sdk 的 uitextfield 文本中删除起始 0
【发布时间】:2013-06-29 15:27:07
【问题描述】:

代码片段:

    NSString *tempStr = self.consumerNumber.text;        

    if ([tempStr hasPrefix:@"0"] && [tempStr length] > 1) {
        tempStr = [tempStr substringFromIndex:1];

        [self.consumerNumbers addObject:tempStr];>           
    }

我尝试了这些东西,只删除了一个零。如何删除多于一个零

输出:001600240321

预期结果:1600240321

非常感谢任何帮助

提前致谢!!!!!

【问题讨论】:

  • 非常感谢 Dharmbir Choudhary....
  • 欢迎您,亲爱的......

标签: iphone ios string nsstring texttrimming


【解决方案1】:

将字符串转换为 int 值并将该值重新分配给字符串,

NSString *cleanString = [NSString stringWithFormat:@"%d", [string intValue]];

o/p:-1600240321

【讨论】:

    【解决方案2】:

    试试这样的`stringByReplacingOccurrencesOfString´ 方法:

    NSString *new = [old stringByReplacingOccurrencesOfString: @"0" withString:@""];
    

    SORRY:这对你没有帮助,因为你的字符串中间部分有更多的“0”!

    【讨论】:

    • 它将用空格替换所有零。
    【解决方案3】:

    尝试使用这个

    NSString *stringWithZeroes = @"001600240321";
    
    NSString *cleanedString = [stringWithZeroes stringByReplacingOccurrencesOfString:@"^0+" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, stringWithZeroes.length)];
    
     NSLog(@"Clean String %@",cleanedString);
    

    清除字符串 1600240321

    【讨论】:

    • 但这将删除字符串所有位置的o
    • @bhanu - 不......它不会!!
    • @TheTiger 为什么不呢?给我一个错误输出的输入
    • @LithuT.V - :) 我的回复是给bhanu ..... :)  我忘了提到他的名字。
    • 将范围更改为 NSMakeRange(0, stringWithZeroes.length-1),因此仅包含零的字符串不会更改为空字符串(如果需要)
    【解决方案4】:

    您可以添加一个递归函数,该函数在字符串以 0 以外的其他字符开始之前被调用:

     -(NSString*)removeZerosFromString:(NSString *)anyString
    {
        if ([anyString hasPrefix:@"0"] && [anyString length] > 1)
        {
            return [self removeZerosFromString:[anyString substringFromIndex:1]];
        }
        else
            return anyString;
    }
    

    所以你只需在你的情况下打电话:

    NSString *tempStr = [self removeZerosFromString:@"000903123981000"];
    

    【讨论】:

      【解决方案5】:
      NSString *str = @"001600240321";
      NSString *newStr = [@([str integerValue]) stringValue];
      

      如果NSString 仅包含数字。 其他明智的使用这个:

      -(NSString *)stringByRemovingStartingZeros:(NSString *)string
      {
          NSString *newString = string;
          NSInteger count = 0;
      
          for(int i=0; i<[string length]; i++)
          {
              if([[NSString stringWithFormat:@"%c",[string characterAtIndex:i]] isEqualToString:@"0"])
              {
                  newString = [newString stringByReplacingCharactersInRange:NSMakeRange(i-count, 1) withString:@""];
                  count++;
              }
              else
              {
                  break;
              }
          }
          return newString;
      }
      

      只需调用这个方法:-

      NSString *stringWithZeroes = @"0000000016909tthghfghf";
      NSLog(@"%@", [self stringByRemovingStartingZeros:stringWithZeroes]);
      

      输出:16909tthghfghf

      【讨论】:

      • 如果 str = 00123asdf 怎么办??
      • 在这种情况下,否决的答案也可以。 :) @LithuT.V 我是根据问题而不是根据未来的要求回答的。
      • 哪个问题?没有地方说他只需要这个,它实际上是一个正在执行的代码循环,意味着它可以是动态。所以它是,这就是答案被否决的原因
      • @LithuT.V - 查看更新的答案。好吧,我们可以回答我们所看到的,但永远无法读懂思想……如果问题得到解决,最好回答一下。有很多方法可以做到这一点。
      • @LithuT.V - 请参阅 zbMax 答案。 :)
      猜你喜欢
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 2018-06-24
      相关资源
      最近更新 更多