gpt4 book ai didi

ios - 我该如何分隔这样的字符串?

转载 作者:行者123 更新时间:2023-11-28 19:10:17 25 4
gpt4 key购买 nike

我得到一个 NSString,其中包含连接在一起的不同电子邮件,例如

def_ghi@hotmail.com_abc_1@me.com

每封电子邮件都由下划线分隔。问题是如果我尝试使用下划线字符分隔字符串,它也会分割单个电子邮件地址,因为下划线字符也可以出现在单个电子邮件中。我的尝试给了我这个结果

def

ghi@hotmail.com

abc

1@me.com

这是我的代码

NSString *string = //The string I am receiving.
NSArray *chunks = [string componentsSeparatedByString: @"_"];

请帮帮我。

编辑: 问了一位学长,他告诉我应该先在字符串中搜索“@”字符。当我找到这个时,我搜索一个“_”,如果存在则替换它。因为“@”之后的第一个下划线是分隔符。然后我应该从这个位置开始并再次重复上一步。我这样做直到字符串结束。请有人帮我解决这个问题。

最佳答案

使用正则表达式的解决方案,

NSString *yourString = @"def_ghi@hotmail.com_abc_1@me.com";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){

// detect email addresses
NSString *email = [yourString substringWithRange:match.range];

//this part remove the '_' between email addresses
if(match.range.location != 0){
if([email characterAtIndex:0]=='_'){
email = [email substringFromIndex:1];
}
}

//print the email address
NSLog(@"%@",email);

}];

编辑:如何收集它们,

像这样声明一个变量,

@property(nonatomic, strong) NSMutableArray *emailsArray;



_emailsArray = [[NSMutableArray alloc] init];

NSString *yourString = @"def_ghi@hotmail.com_abc_1@me.com";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){

// detect email addresses
NSString *email = [yourString substringWithRange:match.range];

//this part remove the '_' between email addresses
if(match.range.location != 0){
if([email characterAtIndex:0]=='_'){
email = [email substringFromIndex:1];
}
}

//print the email address
NSLog(@"%@",email);
[self.emailsArray addObject:email];
}];


NSLog(@"%@",self.emailsArray);

关于ios - 我该如何分隔这样的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16312927/

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