2

「-」を区切り文字として使用して在庫量を示す文字列があります。

これは次のように構築されています:localStock--wareHouseStocksupplierStock

ここで、文字列の最後にあるsupplierStockを更新したいのですが、以下のコードでわかるように、元の文字列が単一スペースの値(20など)より多くを返すと、問題が発生します。

最後の「-」までのすべての文字を削除する(または2番目の「-」の後の文字を削除する)方法はありますか?

NSMutableString *string1 = [NSMutableString stringWithString: p1.colorStock];
                NSLog(@"string1: %@",string1);
                NSString *newString = [string1 substringToIndex:[string1 length]-2];
                NSLog(@"newString: %@",newString);
                NSString *colorStock = [NSString stringWithFormat:@"%@-%@",newString,p2.supplierStock];
                NSLog(@"colorstock: %@",colorStock);
                p1.colorStock = colorStock;

NSLog1

string1: 0-0-0
newString: 0-0
colorstock: 0-0-20

NSLog2

string1: 0-0-20
newString: 0-0-
colorstock: 0-0--20

編集: Srikarのおかげで動作しました!

NSString *string1 = [NSString stringWithString: p1.colorStock];
                NSLog(@"string1: %@",string1);
                NSString  *finalString = [string1 stringByReplacingOccurrencesOfString:[[string1 componentsSeparatedByString:@"-"] lastObject] withString:p2.supplierStock.stringValue];
                NSLog(@"finalString: %@",finalString);
                p1.colorStock = finalString;
4

4 に答える 4

10

componentsSeparatedByStringの後に を使用しないのはなぜlastObjectですか?

NSString *supplierStock = [[string1 componentsSeparatedByString:@"-"] lastObject];

上記は、「在庫量」が常に「-」で区切られた 3 のセットである場合に機能します。また、常に仕入先在庫lastObjectが必要なため、お客様のニーズに最適です。

もちろん、 で分割string1した後-、インスタンスを取得し、NSArrayを使用して個々のコンポーネントにアクセスできますobjectAtIndex:index。あなたが望むなら、あなたは通り抜けるlocalStockことができます

NSString *localStock = [[string1 componentsSeparatedByString:@"-"] objectAtIndex:0];

于 2013-03-06T10:36:33.763 に答える
3

を使用して文字列を3つの部分に分割し、[NSString componentsSeparatedByString:@"-"]それを再度構築することをお勧めします。

NSArray *components = [p1.colorStock componentsSeparatedByString:@"-"];
p1.colorStock = [NSString stringWithFormat:@"%@-%@-%@",
    [components objectAtIndex:0],
    [components objectAtIndex:1],
    p2.supplierStock];
于 2013-03-06T10:38:20.073 に答える
1

次のような文字列で

NSString *myString = @"Hello-World";

componentsSeparatedByString:NSString オブジェクトのメソッドで分離できます。

NSArray *myWords = [myString componentsSeparatedByString:@"-"];

myWords- 配列には、2 つのオブジェクトNSStringHelloが含まれますWorld

文字列にアクセスするには:

NSString *theHelloString = [myWords objectAtIndex:0];
NSString *theWorldString = [myWords objectAtIndex:1];

それが役に立てば幸い!

于 2013-03-06T10:40:13.680 に答える