簡體   English   中英

IP地址的目標C字符串處理

[英]Objective C String Manipulation of an IP Address

我有一個NSString,它是一個本地IP地址,我需要刪除此IP地址上的最后一組數字,並替換為255。我這樣做是為了從本地IP地址創建廣播數據包。

我已經檢查了所有可用的字符串操作函數,但找不到Left函數,這將有助於解決這種情況。

基本上我想這樣做:

將192.168.1.10轉換為192.168.1.255

編輯:請注意以下信息,用於計算網絡的廣播地址。 通過對IP地址和反向網絡掩碼執行按位或運算來計算。 您可以在此處看到計算器-http: //www.subnet-calculator.com/

此外,此處提供了有關如何計算廣播地址的實際代碼- 在Objective-C中計算廣播地址

這樣做是為了避免我的問題造成任何混亂。

在Objective-C使用偏移量獲取NSString中的字符的索引並在Objective-C使用子字符串,向您展示了如何在另一個字符串中查找一個字符串的范圍,包括向后搜索的選項。 使用該值,找到@"."的范圍@"." (使用NSBackwardsSearch選項)在您的IP地址ipaddr

假設你得到了范圍到一個變量命名rangerange.location是你需要什么,但range.length不是(這是1,長度@“”),以便修復程序: range.length = [ipaddr.length] - range.location;

最后,使用該范圍進行替換: maskAddress = [ipaddress stringByReplacingCharactersInRange:range withString:@".255"];

現在maskAddr包含您所描述的替換項。

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];

NSString具有-componentsSeparatedByString:,您可以使用它來將字符串分成一個數組(如果您指定@“。”作為字符串),更改數組,然后將其與NSArray的-componentsJoinedByString放在一起:

或者,您可以使用NSString的-rangeOfString:@“。”選項:NSBackwardsSearch查找最后一個“。”的位置,然后使用substringToIndex:將字符串分開,並附加@“ 255”。

或者,您可以使用NSString的-stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)替換選項:(NSStringCompareOptions)選項范圍:(NSRange)searchRange並指定您正在執行RegEx,但這會更難。

您可以像在這里一樣在NSSring對象上使用方法substringToIndex

然后附加一個字符串或使用NSStringWithFormat創建一個新的字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM