как преобразовать хост nsurl в нижний регистр

Допустим, у меня есть www.GOOgle.com/.......

Я хочу изменить его на www.google.com/....

и оставьте остальную часть URL как есть.

Я пытался с NSURLComponents, но это не сработало.

// I am taking input from textfield and making the nsurl.

 NSURLComponents *components = [NSURLComponents componentsWithString: _textfield.text]; // input from textfield
[[components host] lowercaseString];
 NSURL *urlin = [components URL]; //but this gives, www.GOOgle.com

Любое лидерство ценится.


person backbencher    schedule 21.12.2017    source источник
comment
почему бы не [_textfield.text lowercaseString];перед преобразованием в NSURL   -  person Reinier Melian    schedule 21.12.2017
comment
Почему вам нужно скрывать URL в нижнем регистре?   -  person Prashant Tukadiya    schedule 21.12.2017
comment
[[components host] lowercaseString] Это что-то возвращает, а не изменяет. Должно быть не менее [components setHost:[[components host] lowercaseString]]; Кроме того, [components host] равно нулю, не так ли? Если вы добавите http:// к тексту строки, тогда это может сработать. См. stackoverflow.com/questions/13130315/url-host- имя-возвращает-ноль   -  person Larme    schedule 21.12.2017


Ответы (3)


Как предлагает @Larme, вы можете использовать метод для установкиHost в URL-адресе

см. пример ниже

NSURLComponents *components = [NSURLComponents componentsWithString: @"https://sTackoverFlow.com/questions/47924276/how-to-convert-host-of-nsurl-to-lowercase"]; 
[components setHost:[components.host lowercaseString] ]; 
NSLog(@"%@",components.URL)

H ttps://stackoverflow.com/questions/47924276/how-to-convert-host-of-nsurl-to-lowercase


ПРИМЕЧАНИЕ:

http:// необходимо добавить в строку, иначе вы получите нулевой хост, например https://www.sTackoverFlow.com/questions/47924276/how-to-convert-host-of-nsurl-to-lowercase это будет работать

пока

www.sTackoverFlow.com/questions/47924276/how-to-convert-host-of-nsurl-to-lowercase

Не будет работать

person Prashant Tukadiya    schedule 21.12.2017

Если ваша строка - это только URL-адрес, вы можете попробовать это,

let strURL = "http://GOogLe.Com/Testt/xyz"
let url = NSURL(string: strURL)
let domain: String = (url?.host)! //get your host name
print(domain) //GOogLe.Com

let str = strURL.replacingOccurrences(of: domain, with: domain.lowercased())
print(str) //http://google.com/Testt/xyz
person Bhavi Lad    schedule 21.12.2017
comment
Не используйте NSURL в Swift. Используйте URL. - person rmaddy; 21.12.2017
comment
И это может привести к сбою, поскольку возможно, что домен может быть в URL-адресе более одного раза, но должна быть изменена только фактическая доменная часть URL-адреса. - person rmaddy; 21.12.2017

  1. Преобразовать строку в нижний регистр.
  2. Затем передайте преобразованное строковое значение методу componentWithString.

Пример: NSString *lowerCaseStringValue = [_textfield.text lowercaseString]; [Компоненты NSURLComponentsWithString: lowerCaseStringValue];

person GJDK    schedule 21.12.2017
comment
Это преобразует весь URL-адрес в нижний регистр, что нам не нужно. Спасибо за время. - person backbencher; 21.12.2017