1

我有一个大的 NSString 我想修剪:

this is an example of my long string

首先,我将其修剪为某个或多个单词。例如,我选择“长”这个词。为达到这个:

NSRange textRange = [[theEntireString lowercaseString] rangeOfString:@"long"];
NSString *subString = //do something to get the individual word(s)??

这将导致:

long

但是,我的最终结果需要 10 个字符。所以在这种情况下,我想要达到的最终结果是:

my long st

如您所见,我在单词的左侧和右侧均匀地添加字符,直到达到所需的字符数,将单词或单词放在中间。

任何帮助深表感谢。

4

3 回答 3

2

这不考虑以下字符串,但它应该可以帮助您入门。

“长字符串” - 开头没有字符“

“字符串很长” - 结尾没有字符

“这是一个长长的字符串” - 查询字符串的双重查找

"long" - 少于 10 个字符

"No instance of loong" - 没有搜索字符串的实例。

NSString *s = @"this is an example of my long string";
NSString *searchString = @"long";
NSRange range = [[s lowercaseString] rangeOfString:searchString];

range.location -= (10 - (searchString.length)) / 2;
range.length = 10;

NSLog(@"%@", [s substringWithRange:range]);
于 2013-09-03T14:48:30.983 回答
1

只要字符串不包含多次定义的分隔符,这应该是正确的:

NSString *string = @"This is an example of my LONG string.";

NSString *separator = @"long";

NSInteger desiredLength = 10;

NSRange range = [[string lowercaseString] rangeOfString:separator];

if(range.location != NSNotFound)
{
    NSInteger remainder = (desiredLength - [separator length]);

    NSInteger halfRemainder = (remainder / 2);

    range = NSMakeRange((range.location - halfRemainder), (range.length + remainder));

    NSString *result = [string substringWithRange:range];

    NSLog(@"result: %@", result);
}

result: my LONG st

这应该是相当可定制的,以满足您的需求。

此外,可能值得检查 halfRemainder 没有尝试除以奇数(即 5 / 2),因为它被强制转换为整数,这可能会导致超出范围异常的问题。

于 2013-09-03T14:51:50.070 回答
0
NSString *theEntireString = @"afsfaof";

NSRange textRange = [[theEntireString lowercaseString] rangeOfString:@"long"];
if (textRange.length < 10) {
    NSRange finalRange = NSMakeRange((10-textRange.length)/2, 10);
}else{
    NSString *subString = [theEntireString substringWithRange:textRange];
}
于 2013-09-03T14:52:50.690 回答