0

嗨,我正在尝试让 NSStrings 在我的一个项目的长度上彼此相等,但我似乎遇到了麻烦。我有两个字符串

    NSString *word1=@"123456";
    NSString *word2=@"123";

我将它们硬编码为不同的长度以进行其他测试。我试图在单词的 from 处附加 0,所以它看起来像 @"000123",我尝试了这种方法来附加字符串,但它建立了 ram如果我让程序运行足够长的时间,我的系统会崩溃..关于如何解决这个问题的任何帮助?有没有不同的方法来做到这一点?

    while ([word1 length]>[word2 length]){
        [word2 stringByAppendingString:@"0"];
    }
    while ([word1 length]<[word2 length]){
        [word1 stringByAppendingString:@"0"];
    }
4

2 回答 2

1

你没有改变字符串。NSString对象是不可变的,您要么必须分配结果:

word2 = [word2 stringByAppendingString:@"0"];

或使用NSMutableStringappendString:

[word2 appendString:@"0"];


您还必须颠倒您的逻辑,因为“附加”意味着“添加到末尾”。

追加 |əˈpɛnd| 动词 [ 带 obj。] 在书面文件的末尾添加(某事):调查结果附在本章之后。

于 2013-10-14T23:16:01.730 回答
0

您需要将代码更改为此

while ([word1 length]>[word2 length]){
        word2 = [word2 stringByAppendingString:@"0"];
}
while ([word1 length]<[word2 length]){
        word1 = [word1 stringByAppendingString:@"0"];
}

我认为内存增加和应用程序崩溃的原因是因为您的旧代码中有一个无限循环。尝试将 NSLog 放入旧代码中的 while 循环中,看看输出是什么。我建议的代码不应该有这样的问题。

于 2013-10-14T23:34:35.300 回答