在 NSURL 中检测并删除 'www'
Detect & remove 'www' in NSURL
我有一个 macOS 应用程序。我需要从任何 NSURL
中删除方案和 www
部分。这是我想出的:
// For testing purposes.
NSString *blogID = @"https://www.testing1234.tumblr.com";
// Create the corrected link string.
NSString *correctLink;
// Convert the string to a url.
NSURL *url = [NSURL URLWithString:blogID];
// Check if the url has a scheme.
if ([url scheme] != nil) {
correctLink = [url host];
} else {
correctLink = blogID;
}
// Ensure there are enough characters before
// performing the necessary 'www.' checks.
if ([correctLink length] > 4) {
// Remove the first instance of 'www.'
// from the blog url link string.
if ([[correctLink substringToIndex:4] containsString:@"www."]) {
correctLink = [correctLink substringFromIndex:4];
}
}
NSLog(@"correctLink: %@", correctLink);
我的问题是:如何可靠地删除字符串的 www
部分?对于初学者,难道没有 www
的不同变体,例如 www2
? NSURL
是否有任何方法可以让我检测字符串的 www
部分? (就像我如何通过调用 scheme
来检测字符串的 http://
部分一样)。
更新
我不能使用 stringByReplacingOccurrencesOfString
,因为它会替换 所有 次出现的 www
。所以如果 url 恰好是 www.testsitewww.tumblr.com
那么它将变成 testsite.tumblr.com
。这不是我想要的,我只想删除第一次出现的 www
(或任何其他变体,例如 www2
)。
谢谢,丹。
您可以替换部分文本例如:
NSString* url = [urlWithWWW stringByReplacingOccurrencesOfString:@"www." withString:@""];
这样做
NSString *blogID = @"https://www.testing1234.tumblr.com";
[blogID stringByReplacingOccurrencesOfString:@"www" withString:@""];
//or
[blogID stringByReplacingOccurrencesOfString:@"www." withString:@""];
或
if([blogID hasPrefix:@"www"]) {
//do stuff
}
@Supertecnoboff 试试这个方法。
您可以用“.”分隔 url你可以获得剩余的字符串。
- 如果 www.或 www2。或其他任何内容,它将以“。”分隔。你可以得到剩余的字符串
NSString *blogID = @"https://www.testing1234.tumblr.com";
NSString *correctLink;
NSURL *url = [NSURL URLWithString:blogID];
if ([url scheme] != nil) {
correctLink = [url host];
} else {
correctLink = blogID;
}
NSArray *arr = [correctLink componentsSeparatedByString:@"."];
NSString *str = @"";
for(int i=1; i<arr.count; i++)
{
str = [str stringByAppendingString:[arr objectAtIndex:i]];
if(i != arr.count-1)
str = [str stringByAppendingString:@"."];
}
NSLog(@"correctLink: %@", str); //correctLink: testing1234.tumblr.com
我有一个 macOS 应用程序。我需要从任何 NSURL
中删除方案和 www
部分。这是我想出的:
// For testing purposes.
NSString *blogID = @"https://www.testing1234.tumblr.com";
// Create the corrected link string.
NSString *correctLink;
// Convert the string to a url.
NSURL *url = [NSURL URLWithString:blogID];
// Check if the url has a scheme.
if ([url scheme] != nil) {
correctLink = [url host];
} else {
correctLink = blogID;
}
// Ensure there are enough characters before
// performing the necessary 'www.' checks.
if ([correctLink length] > 4) {
// Remove the first instance of 'www.'
// from the blog url link string.
if ([[correctLink substringToIndex:4] containsString:@"www."]) {
correctLink = [correctLink substringFromIndex:4];
}
}
NSLog(@"correctLink: %@", correctLink);
我的问题是:如何可靠地删除字符串的 www
部分?对于初学者,难道没有 www
的不同变体,例如 www2
? NSURL
是否有任何方法可以让我检测字符串的 www
部分? (就像我如何通过调用 scheme
来检测字符串的 http://
部分一样)。
更新
我不能使用 stringByReplacingOccurrencesOfString
,因为它会替换 所有 次出现的 www
。所以如果 url 恰好是 www.testsitewww.tumblr.com
那么它将变成 testsite.tumblr.com
。这不是我想要的,我只想删除第一次出现的 www
(或任何其他变体,例如 www2
)。
谢谢,丹。
您可以替换部分文本例如:
NSString* url = [urlWithWWW stringByReplacingOccurrencesOfString:@"www." withString:@""];
这样做
NSString *blogID = @"https://www.testing1234.tumblr.com";
[blogID stringByReplacingOccurrencesOfString:@"www" withString:@""];
//or
[blogID stringByReplacingOccurrencesOfString:@"www." withString:@""];
或
if([blogID hasPrefix:@"www"]) {
//do stuff
}
@Supertecnoboff 试试这个方法。 您可以用“.”分隔 url你可以获得剩余的字符串。
- 如果 www.或 www2。或其他任何内容,它将以“。”分隔。你可以得到剩余的字符串
NSString *blogID = @"https://www.testing1234.tumblr.com";
NSString *correctLink;
NSURL *url = [NSURL URLWithString:blogID];
if ([url scheme] != nil) {
correctLink = [url host];
} else {
correctLink = blogID;
}
NSArray *arr = [correctLink componentsSeparatedByString:@"."];
NSString *str = @"";
for(int i=1; i<arr.count; i++)
{
str = [str stringByAppendingString:[arr objectAtIndex:i]];
if(i != arr.count-1)
str = [str stringByAppendingString:@"."];
}
NSLog(@"correctLink: %@", str); //correctLink: testing1234.tumblr.com