2014-01-11 42 views
-1

我有一個NSString是一個本地IP地址,我需要刪除此IP地址上的最後一組數字,並用255替換。我正在這樣做來創建廣播數據包本地IP地址。Objective C字符串操作IP地址

我檢查了所有可用的字符串操作函數,並找不到左函數,這將有助於這種情況。

基本上我想這樣做: -

轉換192.168.1.10到192.168.1.255

編輯:請注意計算的廣播地址的網絡的以下信息。它通過對IP地址和反向網絡掩碼執行按位或運算。你可以在這裏看到一個計算器 - http://www.subnet-calculator.com/

還就如何計算廣播地址的實際代碼是在這裏可用 - Calculating the Broadcast Address in Objective-C

將其加入,以避免與我的問題產生任何混淆。

+0

哇!你們中的一些人很艱難(或者只是意味着精神)。我不敢相信我對這個問題投了贊成票。我做了我的研究,這在任何以前的帖子或網絡上都沒有。並看看答案,它並不那麼簡單!這個問題肯定會在未來幫助其他人。看看這個相同類型的簡單問題,它有79個upvotes - http://stackoverflow.com/questions/1082178/objective-c-remove-last-character-from-string?lq = 1 – Remixed123

回答

2
NSScanner* scanner = [NSScanner scannerWithString:idAddress]; 
[scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"."]]; 
int a, b, c; 
[scanner scanInt:&a]; 
[scanner scanInt:&b]; 
[scanner scanInt:&c]; 
NSString* result = [NSString stringWithFormat:@"%d.%d.%d.255", a, b, c]; 
+1

但用255替換最後一個數字只適用於網絡掩碼'255.255.255.0'。通常你需要使用反向網絡掩碼的按位或IP來獲得boarcast IP。 - Cy-4AH 11分鐘前 –

+0

不是我已經考慮或測試過的東西。所以謝謝,我會研究這個! – Remixed123

0

你可以使用的方法substringToIndexNSSring對象,他們沒有像here

再追加一個字符串或使用NSStringWithFormat創建一個新的

1

的NSString有-componentsSeparatedByString:你可以用它來分隔字符串轉換爲數組(如果指定@「。」作爲字符串),更改數組,然後將它們與NSArray的-componentsJoinedByString放在一起:

或者您可以使用NSString的-rangeOfString:@「。」選項:NSBackw ardsSearch查找最後一個「。」所在的位置,然後用substringToIndex:將字符串分開並附加您的@「255」。您可以使用NSString的-stringByReplacingOccurrencesOfString:(NSString *)目標withString:(NSString *)替換選項:(NSStringCompareOptions)選項範圍:(NSRange)searchRange並指定您正在執行RegEx,但是那樣做比較難。

2

Getting index of a character in NSString with offset & using substring in Objective-C向您展示瞭如何在另一個字符串中查找字符串的範圍,包括向後搜索的選項。使用它,請在您的IP地址ipaddr內找到@"."(帶有NSBackwardsSearch選項)的範圍。

假設你得到了範圍到名爲range變量,range.location是你需要什麼,但range.length不是(這是1,長度@「」),以便解決這個問題:range.length = [ipaddr.length] - range.location;

最後,使用範圍進行更換:maskAddress = [ipaddress stringByReplacingCharactersInRange:range withString:@".255"];

現在maskAddr包含你所描述的更換。

+0

我剛剛閱讀你的個人資料。非常抱歉,我知道你會在答案中付出很多努力。但最終,作爲一個從查看和查看代碼中學習的編碼人員,沒有什麼比代碼更勝一籌。我們都有不同的學習方式,而且我已經進行了30多年的編程,所以從概念上講,我不太可能學習新的東西,但是語法和不同語言的方法是不同的,這是另一回事。我確實提供了一個投票:-) – Remixed123