我有一个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
添加此内容是为了避免因我的问题而产生任何混淆。
答案 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
创建一个新字符串