Objective C字符串操作IP地址

时间:2014-01-11 12:54:13

标签: objective-c string nsstring

我有一个NSString是本地IP地址,我需要删除此IP地址上的最后一组数字并替换为255.我这样做是为了从本地IP地址创建广播数据包。

我检查了所有可用的字符串操作函数,但找不到Left函数,这对这种情况有帮助。

基本上我想这样做: -

将192.168.1.10转换为192.168.1.255

编辑:请注意以下有关计算网络广播地址的信息。它通过对IP地址和反向网络掩码执行按位OR来计算。你可以在这里看到一个计算器 - http://www.subnet-calculator.com/

此处提供了有关如何计算广播地址的实际代码 - Calculating the Broadcast Address in Objective-C

添加此内容是为了避免因我的问题而产生任何混淆。

4 个答案:

答案 0 :(得分:2)

Getting index of a character in NSString with offset & using substring in Objective-C向您展示如何在另一个字符串中查找字符串的范围,包括向后搜索的选项。使用该功能,在您的IP地址@"."中找到NSBackwardsSearch(使用ipaddr选项)的范围。

假设您将范围放入名为range的变量中,range.location就是您所需要的,但range.length不是(它是1,@“的长度。”)所以修复它:range.length = [ipaddr.length] - range.location;

最后,使用该范围执行替换:maskAddress = [ipaddress stringByReplacingCharactersInRange:range withString:@".255"];

现在maskAddr包含您所描述的替代品。

答案 1 :(得分: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];

答案 2 :(得分:1)

NSString有-componentsSeparatedByString:您可以使用它将字符串分隔成一个数组(如果指定@“。”作为字符串),更改数组,然后将它们与NSArray的-componentsJoinedByString一起放回:

或者你可以使用NSString的-rangeOfString:@“。”选项:NSBackwardsSearch查找最后一个“。”的位置,然后用substringToIndex拉开字符串:并附加你的@“255”。

或者您可以使用NSString的-stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)替换选项:(NSStringCompareOptions)选项范围:(NSRange)searchRange并指定您正在执行RegEx,但这是更难。

答案 3 :(得分:0)

您可以在substringToIndex对象上使用方法NSSring,就像here

一样

然后附加一个字符串或使用NSStringWithFormat创建一个新字符串