在Swift中将字符串转换为HTML

3

我正在发送一个包含电子邮件地址作为用户名和密码的POST请求。当我像这样硬编码输入电子邮件地址(test@test.com)时,请求可以正常工作:

test%40test.com

然而,当我传递实际的电子邮件地址时,它显然不起作用。在Swift中,如何将字符串转换为其HTML格式(或URL格式)?我发现iOS7添加了NSHTMLTextDocumentType,也许可以帮我做到这一点,但我找不到任何Swift示例。以下是我在Objective C中找到的一个示例:

NSURL *htmlString = [[NSBundle mainBundle]
URLForResource: @"helloworld" withExtension:@"html"];
NSAttributedString *stringWithHTMLAttributes = [[NSAttributedString alloc]   initWithFileURL:htmlString options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType} documentAttributes:nil error:nil];

这在Swift中怎么实现?如果有更好/更容易的建议可适用于所有版本的iOS,我将不胜感激。我也不想引用第三方库来实现这个功能。

1
相关(可能重复):https://dev59.com/RWAf5IYBdhLWcg3wgzHI#24552032 - undefined
3个回答

4

谢谢Bryan。我从那个帖子中找到了答案,最终的解决方案如下:

var originalString = "test@test.com"
var escapedString = originalString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLHostAllowedCharacterSet())
println("escapedString: \(escapedString)")

这段代码输出以下内容:
test%40test.com

1

我在一个游乐场试过了这个方法,似乎可行。这是我在Objective-C中用于转义URL字符串的方法。

var email: CFStringRef = "email@address.com"
CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(nil, email, nil, "!*'();:@&=+$,/?%#[]", kCFStringEncodingASCII))

请原谅我的无知,我是iOS开发的新手。这基本上是在调用Objective C来执行这个操作吗?如果是的话,在Swift中有没有一种原生的方法来实现这个呢? - undefined
这取决于你对本地的定义,我猜。CFURLCreateStringByAddingPercentEscapes是来自CoreFoundation的一个函数,它是苹果的“标准库”之一。因此,虽然该函数本身被桥接到Swift,并且是用另一种语言编写的,但Swift之所以如此强大和易用,部分原因在于你可以访问这些库以及它们背后数十年的工作。 - undefined

0

这是最新的解决方案:

yourString.addingPercentEncoding(withAllowedCharacters: .letters)

调整.letters以使用不同的集合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接