Gibt es eine Möglichkeit, HTML codieren eine Zeichenfolge (NSString) in Objective-C, etwas entlang der Linien von Server.HtmlEncode in .NET?
Antworten
Zu viele Anzeigen?Die einfachste Lösung ist, eine Kategorie wie unten zu erstellen:
Hier ist die Header-Datei der Kategorie:
#import <Foundation/Foundation.h>
@interface NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding;
@end
Und hier ist die Umsetzung:
#import "NSString+URLEncoding.h"
@implementation NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
return (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)self,
NULL,
(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
CFStringConvertNSStringEncodingToEncoding(encoding));
}
@end
Und jetzt können wir das einfach tun:
NSString *raw = @"hell & brimstone + earthly/delight";
NSString *url = [NSString stringWithFormat:@"http://example.com/example?param=%@",
[raw urlEncodeUsingEncoding:NSUTF8StringEncoding]];
NSLog(url);
Der Dank für diese Antwort geht an die folgende Website:-
http://madebymany.com/blog/url-encoding-an-nsstring-on-ios
Siehe untenstehende Antwort:
NSString *content = global.strPrivacyPolicy;
content = [[[[[content stringByReplacingOccurrencesOfString: @"&" withString: @"&"]
stringByReplacingOccurrencesOfString:@""" withString:@"\" "]
stringByReplacingOccurrencesOfString: @"'" withString:@"'"]
stringByReplacingOccurrencesOfString: @">" withString: @">"]
stringByReplacingOccurrencesOfString: @"<" withString:@"<"];
[_webViewPrivacy loadHTMLString:content baseURL:nil];
Verwenden Sie die Nachricht aus dem folgenden Beispiel:
anyStringConverted = [anyString stringByReplacingOccurrencesOfString:@"\n" withString:@"<br>"];
Damit wird der Befehl "neue Zeile" in den entsprechenden HTML-Code umgewandelt. Um Symbole umzuwandeln, müssen Sie jedoch die entsprechende Html-Nummer angeben. Die vollständige Liste der Html-Nummern finden Sie hier
Ich habe den einzigen Weg gefunden, der nur integrierte Funktionen verwendet (kein manuelles Parsing) und alle Fälle abdeckt. Erfordert AppKit/UIKit zusätzlich zu Foundation. Dies ist Swift, kann aber leicht Objective-C sein:
func encodedForHTML() -> String {
// make a plain attributed string and then use its HTML write functionality
let attrStr = NSAttributedString(string: self)
// by default, the document outputs a whole HTML element
// warning: if default apple implementation changes, this may need to be tweaked
let options: [NSAttributedString.DocumentAttributeKey: Any] = [
.documentType: NSAttributedString.DocumentType.html,
.excludedElements: [
"html",
"head",
"meta",
"title",
"style",
"p",
"body",
"font",
"span"
]
]
// generate data and turn into string
let data = try! attrStr.data(from: NSRange(location: 0, length: attrStr.length), documentAttributes: options)
let str = String(data: data, encoding: .utf8)!
// remove <?xml line
return str.components(separatedBy: .newlines).dropFirst().first!
}
- See previous answers
- Weitere Antworten anzeigen