2

我是新的目标,我面临着我的第一个问题,我无法继续我的第一个项目。

这很简单,我有一个 NSString :

NSString *myString = @"<font face='Helvetica' size=25 color='#d79198'> Here is some text !</font>"; 

我想要做的是得到大小“25”的值,它总是2个字符长,所以我可以计算我的 UILabel 大小。

我知道如何检测是否有我正在寻找的子字符串 "size=" 使用:

if ([string rangeOfString:@"bla"].location == NSNotFound)

但我还没有找到或不明白如何提取字符串 @"size=XX" 然后从 *myString 获取 XX 作为 NSString

感谢您的帮助。

4

7 回答 7

2
NSString *myString = @"<font face='Helvetica' size=25 color='#d79198'> Here is some text !</font>";
    if ([myString rangeOfString:@"size"].location != NSNotFound)
    {
        myString = [myString substringFromIndex:[myString rangeOfString:@"size"].location]; 
        myString = [myString substringToIndex:[myString rangeOfString:@" "].location]; // Now , myString ---> size=25 color='#d79198'> Here is some text !</font> 
        myString = [myString substringFromIndex:[myString length]-2];// Now, myString ---> size=25
        NSLog(@"myString -- %@",myString); // Now, myString ---> 25
    }
于 2013-04-06T12:05:28.910 回答
2
NSString *myString = @"<font face='Helvetica' size=25 color='#d79198'> Here is some text !</font>";
NSRange range = [myString rangeOfString:@"size="];
if (range.location != NSNotFound)
{
    NSLog(@"Found \"size=\" at %d", range.location);
    NSString *sizeString = [myString substringWithRange:NSMakeRange(range.location+5, 2)];
    NSLog(@"sizeString: %@", sizeString);
}


这应该可以解决问题。你也可以在最后这样做:int sizeFont = [sizeString intValue];

于 2013-04-06T12:07:46.257 回答
1

如果您有类似 stack:overflow 的字符串,请按以下方式使用它:

 NSString *Base=@"stack:overflow"
 NSString *one  = [[Base componentsSeparatedByString:@":"] objectAtIndex:0];
 NSString *two  = [[Base componentsSeparatedByString:@":"] objectAtIndex:1];

在这种情况下,一 = 堆栈,二 = 溢出

于 2013-07-10T13:11:12.563 回答
0

HTML 页面的一部分?然后使用专为该任务设计的工具

于 2013-04-06T12:07:08.033 回答
0

您可以自己计算数字的范围或使用非常简单的正则表达式来获取子字符串,例如

(?<=size\=)\d*

这意味着您正在搜索以\d*“size=”( )开头的数字( (?<=size\=)

哪个使用 NSRegularExpression 将是

NSError *error = NULL;
NSRegularExpression *regex = 
  [NSRegularExpression regularExpressionWithPattern:@"(?<=size\\=)\\d*" 
                                            options:0 
                                              error:&error];
NSTextCheckingResult *match = 
  [regex firstMatchInString:myString 
                    options:0 
                      range:NSMakeRange(0, [myString length])];
NSString *sizeText = [myString substringWithRange:match.range];

最后,您应该使用将文本"25"转换为数字

NSInteger size = [sizeText integerValue];
于 2013-04-06T12:07:40.310 回答
-1

使用componentsSeparatedByString:方法...

NSString *myString = @"<font face='Helvetica' size=25 color='#d79198'> Here is some text !</font>";
    NSString *theSizeString = [[[[myString componentsSeparatedByString:@" "] objectAtIndex:2] componentsSeparatedByString:@"="] objectAtIndex:1];
    NSLog(@"The sizestring:%@",theSizeString);

我想这会对你有所帮助。

于 2013-04-06T12:10:16.527 回答
-1

你可以得到字符串的范围@"size="。范围有位置和长度。因此,您接下来需要调用myStringsubstringWithRange:方法。该参数将从NSRage位置+长度@"size="和长度 2 开始。

于 2013-04-06T12:12:31.827 回答