我已經爲iPhone製作了二次方程解算器,當單擊文本框時,我的自定義鍵盤出現。我有一個按鈕可以改變數字是正面還是負面。現在我發生了什麼是按下按鈕(0 - 文本的當前值)是什麼在文本框中顯示,所以如果數字是正數,它會變成負數,如果它是負數將變成正。我遇到了一些問題,所以我想在字符串的開頭放一個減號,如果數字是正數,並且數字是負數,減號將被刪除。任何人都可以給我這方面的指導嗎?Objective C - 在字符串的特定部分添加字符
回答
而不是使用一個數學否定的函數我分配了一個NSMutableString到我的UITextField然後我插入一個「 - 」符號使用insertString:atIndex:然後我重新分配改變的字符串到我的UITextField要切換正面和負面,我創建了一個if函數,所以如果我的float值textfield是greate r或等於0,則插入「 - 」,但如果我的文本字段的浮點值小於零,則使用deleteCharactersInRange刪除「 - 」。這是我的代碼,因爲它代表:
- (IBAction)positivity{
NSMutableString *a = [NSMutableString stringWithString:aVal.text];
if([aVal.text floatValue]>=0){
[a insertString: @"-" atIndex: 0];
aVal.text = a;
}
else if([aVal.text floatValue]<0){
NSRange range = {0,1};
[a deleteCharactersInRange:range];
aVal.text = a;
}
}
aVal是我改變的UITextField的名稱。
雖然你可能直接操縱數值的字符串表示,這種方法是一個壞主意。它不僅比其他替代品效率低,而且可能不正確。 (例如,@Ken的答案會導致兩個減號)
你可能想要做什麼是否定的數值(只是乘以-1,或者從0減去它作爲你建議)並反映在界面(你提到一個文本框)的變化。
如果你使用標準的Cocoa控件(它繼承自NSControl,正如NSTextField所做的那樣),我建議使用-[NSControl setIntegerValue:]
來改變文本字段的文本。如果你能夠很好地分解你的UI,並且爲二次方程中的每個變量都有一個文本字段,這應該相當簡單。 (如果您使用的是一個整數值以外的東西,使用類似-setDoubleValue:
或-setFloatValue:
代替。)
如果你必須預先創建自己的字符串,用一個整數格式說明會顯示「-
」自動在適當簽署。請務必使用%ld
而不是%d
(謝謝,@Peter!)作爲NSInteger值的格式說明符,以避免截斷大於32位的值。例如:
NSString *result = [NSString stringWithFormat:@"%ld", nsIntegerValue];
在更普遍的意義上說,如果你需要插入動態獲得的字符串(不只是東西,你可以創建在編譯時的格式字符串),你也可以使用NSMutableString及其方法-appendString:
和-insertString:atIndex:
。
直線字符串方法的替代方法是不使用字符串。前一段時間,我爲iPhone編寫了一個圖形計算器,它將公式內部存儲在NSStrings的NSMutableArray中。陣列中的每個插槽對應於方程中的一個元素,例如「x」,「^」,「sin(」等。
當我需要否定方程式時,到insertObject:@「 - 」 atIndex:0,而不是試圖直接將其插入到字符串然後每當陣列被改變,我只是重拍的公式字符串是這樣的:
NSString * newEquation = [equationElements componentsJoinedByString:@""];
- 1. 斯普利特和特定字符添加到C#字符串
- 2. Objective C字符串分隔
- 3. 檢查特定字符的Objective-C字符串
- 4. 如何在ActionLink的字符串部分添加NEW LINE字符?
- 5. 在C字符添加到字符串
- 6. 如何在讀取特定字符串後添加字符串?
- 7. 將字符串插入字符串的特定部分
- 8. 分割字符串的特定字符
- 9. 將字符串添加到Excel中字符串的部分中
- 10. 添加字符串值在特定點
- 11. 替換字符串的特定部分
- 12. 獲取字符串的特定部分
- 13. 刪除字符串的特定部分
- 14. 獲取字符串的特定部分
- 15. 查找字符串的特定部分
- 16. 在一個特定的字符串位置添加字符
- 17. 添加字符串在C#
- 18. 分手字符串在Objective-C
- 19. 在特定字符後刪除部分字符串
- 20. 按特定要求取字符串的特定字符串部分
- 21. 從字符串在Objective-C
- 22. 刪除特定字符後的字符串的其餘部分
- 23. 保留特定字符前的字符串的左側部分
- 24. 在Java中的字符串中的特定位置添加特定字符
- 25. Java更改特定字符的部分字符串
- 26. 從特定字符替換字符串的一部分
- 27. PHP - 將字符串添加到特定字符位置的現有字符串
- 28. 爲每個字符串添加特定字符python中的字符串列表
- 29. 如何得到一個字符串的特定部分在C#
- 30. 得到一個字符串的特定部分在C#
一個小錯誤:%d是一個int,而不是NSInteger。改用%ld(long int)。在64位Mac上,NSInteger是64位,所以如果使用%d,則32位int範圍外的數字將被截斷爲低32位。 – 2009-07-05 16:10:08
抓住彼得,把它融入到我的答案中。 – 2009-07-05 23:11:35