Удалить http: // из NSString - PullRequest
       2

Удалить http: // из NSString

7 голосов
/ 25 августа 2011

Как удалить определенный текст из NSString, например "http://"?". Это должно быть именно в таком порядке. Спасибо за помощь!

Вот код, который я использую, однако http: // не удаляется. Вместо этого появляется http://http://www.example.com. Что мне делать? Спасибо!

NSString *urlAddress = addressBar.text;
[urlAddress stringByReplacingOccurrencesOfString:@"http://" withString:@""];
urlAddress = [NSString stringWithFormat:@"http://%@", addressBar.text];
NSLog(@"The user requested this host name: %@", urlAddress);

Ответы [ 12 ]

19 голосов
/ 25 августа 2011

Как это?

NSString* stringWithoutHttp = [someString stringByReplacingOccurrencesOfString:@"http://" withString:@""];

(если вы хотите удалить текст только в начале, делайте то, что говорит jtbandes - приведенный выше код также заменит вхождения в середине строки)

8 голосов
/ 22 ноября 2013

Вот решение, которое заботится о http & https:

    NSString *shortenedURL = url.absoluteURL;

    if ([shortenedURL hasPrefix:@"https://"]) shortenedURL = [shortenedURL substringFromIndex:8];
    if ([shortenedURL hasPrefix:@"http://"]) shortenedURL = [shortenedURL substringFromIndex:7];
5 голосов
/ 25 августа 2011
NSString *newString = [myString stringByReplacingOccurrencesOfString:@"http://"
                                                          withString:@""
                                                             options:NSAnchoredSearch // beginning of string
                                                               range:NSMakeRange(0, [myString length])]
3 голосов
/ 25 августа 2011

, если http: // находится в начале строки, вы можете использовать

 NSString *newString  = [yourOriginalString subStringFromIndex:7];

или как указано в SVD

РЕДАКТИРОВАТЬ: ПОСЛЕ ПРОСМОТРА ВОПРОСА РЕДАКТИРОВАТЬ

изменить эту строку

[urlAddress stringByReplacingOccurrencesOfString:@"http://" withString:@""];

на

urlAddress  = [urlAddress stringByReplacingOccurrencesOfString:@"http://" withString:@""];
3 голосов
/ 25 августа 2011

Другой способ:

NSString *str = @"http//abc.com";  
NSArray *arr = [str componentSeparatedByString:@"//"];  
NSString *str1 = [arr objectAtIndex:0];       //   http  
NSString *str2 = [arr objectAtIndex:1];       //   abc.com
1 голос
/ 13 июля 2017

Swift 3

Для замены всех вхождений:

let newString = string.replacingOccurrences(of: "http://", with: "")

Для замены вхождений в начале строки:

let newString = string.replacingOccurrences(of: "http://", with: "", options: .anchored)
0 голосов
/ 16 декабря 2017

Еще один общий способ:

- (NSString*)removeURLSchemeFromStringURL:(NSString*)stringUrl {
    NSParameterAssert(stringUrl);
    static NSString* schemeDevider = @"://";

    NSScanner* scanner = [NSScanner scannerWithString:stringUrl];
    [scanner scanUpToString:schemeDevider intoString:nil];

    if (scanner.scanLocation <= stringUrl.length - schemeDevider.length) {
        NSInteger beginLocation = scanner.scanLocation + schemeDevider.length;
        stringUrl = [stringUrl substringWithRange:NSMakeRange(beginLocation, stringUrl.length - beginLocation)];
    }

    return stringUrl;
}
0 голосов
/ 30 августа 2017

Привет, ребята, немного опоздал, но я пришел с общим способом. Скажем:

NSString *host = @"ssh://www.somewhere.com";
NSString *scheme = [[[NSURL URLWithString:host] scheme] stringByAppendingString:@"://"]; 
// This extract ssh and add :// so we get @"ssh://" note that this code handle any scheme http, https, ssh, ftp ....
NSString *stripHost = [host stringByReplacingOccurrencesOfString:scheme withString:@""]; 
// Result : stripHost = @"www.somewhere.com"
0 голосов
/ 22 января 2015

Если вы хотите обрезать обе стороны, а также написать меньше кода:

NSString *webAddress = @"http://www.google.co.nz";

// add prefixes you'd like to filter out here
NSArray *prefixes = [NSArray arrayWithObjects:@"https:", @"http:", @"//", @"/", nil];

for (NSString *prefix in prefixes)
    if([webAddress hasPrefix:prefix]) webAddress = [webAddress stringByReplacingOccurrencesOfString:prefix withString:@"" options:NSAnchoredSearch range:NSMakeRange(0, [webAddress length])];

// add suffixes you'd like to filter out here
NSArray *suffixes = [NSArray arrayWithObjects:@"/", nil];

for (NSString *suffix in suffixes)
    if([webAddress hasSuffix:suffix]) webAddress = [webAddress stringByReplacingOccurrencesOfString:suffix withString:@"" options:NSBackwardsSearch range:NSMakeRange(0, [webAddress length])];

Этот код удаляет указанные префиксы спереди и суффиксы сзади (как конечный слеш). Просто добавьте больше подстрок в массив префиксов / суффиксов, чтобы отфильтровать больше.

0 голосов
/ 08 ноября 2012

NSString * newString = [string stringByReplacingOccurferencesOfString: @ "http://" withString: @" "];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...