gpt4 book ai didi

ios - 从中间截断 NSString 的子字符串

转载 作者:行者123 更新时间:2023-11-29 02:29:15 24 4
gpt4 key购买 nike

我们如何从中间截断 NSString 的子字符串比方说,我有 NSStringNSString *str = @"2014 年 11 月 25 日星期四/Shared/Documents/Drawing/c"我想从中间截断路径字符串并在标签上显示它。为此我在标签上使用 NSTrinbuteString

NSString *path = @"/Shared/Documents/Drawing/c";
NSString *date = @"Thu 25 Nov 2014";
NSString *wholeString = self.descLabel.text;
NSRange pathRange = [wholeString rangeOfString:path];
NSRange range=NSMakeRange(pathRange.location,path.length);

NSMutableParagraphStyle* style= [NSMutableParagraphStyle new];
style.lineBreakMode= NSLineBreakByTruncatingMiddle;


NSMutableAttributedString* str=[[NSMutableAttributedString alloc]initWithString: self.descLabel.text];
[str addAttribute: NSParagraphStyleAttributeName value: style range: range];
self.descLabel.attributedText= str;

这似乎没有做任何事情。如果我做错了什么,有人建议

最佳答案

一个使用非常简单的正则表达式的优化示例。此示例要求路径以正斜杠开头,并且路径始终位于最后。

NSString *test = @"Thu 25 Nov 2014 /Shared/Documents/Drawing/c";
NSString *resultPath = @"";
// Create a range for it. We do the replacement on the whole
// range of the text, not only a portion of it. This can be optimized.
NSRange range = NSMakeRange(0, test.length);

NSError *errors = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(/.*)" options:NSRegularExpressionCaseInsensitive|NSRegularExpressionDotMatchesLineSeparators error:&errors];

NSArray *matches = [regex matchesInString:test options:NSMatchingProgress range:range];
if(matches.count == 1 && !errors) {
NSTextCheckingResult* result = matches[0];
// One result found
resultPath = [test substringWithRange:result.range];
} else {
// many results found or error
}

resultPath 现在将包含:“/Shared/Documents/Drawing/c”。

现在,您只需将结果添加到标签或将其添加到属性字符串,即可获得更多自定义功能,就像您已经完成的那样。

正如我一开始所说的。这是一个非常基本的正则表达式示例..

关于ios - 从中间截断 NSString 的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27121377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com