Some notes about this update: - Using apollo-codegen 0.17.0-alpha.13 for Swift 4 support - Upgraded SnapKit, HTMLImage to versions with Swift 4 support - Added 3.2 intermix support for local CocoaPods ([from here](https://github.com/CocoaPods/CocoaPods/issues/6791)) - Using alpha version of Apoolo iOS as well for Swift 4
HTMLString is a library written in Swift that allows your program to add and remove HTML entities in Strings.
| Main features | |
|---|---|
| 🔏 | Adds entities for ASCII and UTF-8/UTF-16 encodings |
| 📝 | Removes more than 2100 named entities (like &) |
| 🔢 | Supports removing decimal and hexadecimal entities |
| 🐣 | Designed to support Swift Extended Grapheme Clusters (→ 100% emoji-proof) |
| ✅ | Fully unit tested |
| ⚡ | Fast |
| 📚 | Documented |
| 🤖 | Compatible with Objective-C |
Supported Platforms
- iOS 8.0+
- macOS 10.10+
- tvOS 9.0+
- watchOS 2.0+
- Linux
Installation
HTMLString version vs Swift version
Below is a table that shows which version of HTMLString you should use for your Swift version.
| Swift version | HTMLString Version |
|---|---|
| 4.X | >= 4.0.0 |
| 3.X | >= 3.0.0 |
Swift Package Manager
Add this line to your Package.swift :
.Package(url: "https://github.com/alexaubry/HTMLString", majorVersion: 4, minor: 0)
CocoaPods
Add this line to your Podfile:
pod 'HTMLString', '~> 4.0'
Carthage
Add this line to your Cartfile:
github "alexaurby/HTMLString" ~> 4.0
Manual
Copy the Sources/HTMLString/ directory into your project.
Usage
HTMLString allows you to add and remove HTML entities from a String.
🔏 Adding HTML Entities (Escape)
When a character is not supported into the specified encoding, the library will replace it with a decimal entity (supported by all browsers supporting HTML 4 and later).
For instance, the
&character will be replaced by&.
You can choose between ASCII and Unicode escaping:
- Use the
addingASCIIEntitiesproperty to escape for ASCII-encoded content - Use the
addingUnicodeEntitiesproperty to escape for Unicode-compatible content
💡 Pro Tip: When your content supports UTF-8 or UTF-16, use Unicode escaping as it is faster and produces a less bloated output.
Example
import HTMLString
let emoji = "My favorite emoji is 🙃"
let escapedEmoji = emoji.addingASCIIEntities // "My favorite emoji is 🙃"
let noNeedToEscapeThatEmoji = emoji.addingUnicodeEntities // "My favorite emoji is 🙃"
let snack = "Fish & Chips"
let escapedSnack = snack.addingASCIIEntities // "Fish & Chips"
let weAlsoNeedToEscapeThisSnack = snack.addingUnicodeEntities // "Fish & Chips"
📝 Removing HTML Entities (Unescape)
To remove all the HTML entities from a String, use the removingHTMLEntities property.
Example
import HTMLString
let escapedEmoji = "My favorite emoji is 🙃"
let emoji = escapedEmoji.removingHTMLEntities // "My favorite emoji is 🙃"
let escapedSnack = "Fish & Chips"
let snack = escapedSnack.removingHTMLEntities // "Fish & Chips"
Objective-C API
With Obj-C Mix and Match, you can import and use the HTMLString module from in Objective-C code.
The library introduces a set of Objective-C specific APIs as categories on the NSString type:
-[NSString stringByAddingUnicodeEntities];: Replaces every character incompatible with HTML Unicode encoding by a decimal HTML entitiy.-[NSString stringByAddingASCIIEntities];: Replaces every character incompatible with HTML ASCII encoding by a decimal HTML entitiy.-[NSString stringByRemovingHTMLEntities];: Replaces every HTML entity with the matching Unicode character.
Escaping Examples
@import HTMLString;
NSString *emoji = @"My favorite emoji is 🙃";
NSString *escapedEmoji = [emoji stringByAddingASCIIEntities]; // "My favorite emoji is 🙃"
NSString *snack = @"Fish & Chips";
NSString *escapedSnack = [snack stringByAddingUnicodeEntities]; // "Fish & Chips"
Unescaping Examples
@import HTMLString;
NSString *escapedEmoji = @"My favorite emoji is 🙃";
NSString *emoji = [escapedEmoji stringByRemovingHTMLEntities]; // "My favorite emoji is 🙃"
NSString *escapedSnack = @"Fish & Chips";
NSString *snack = [escapedSnack stringByRemovingHTMLEntities]; // "Fish & Chips"
Author
- Alexis Aubry, me@alexaubry.fr
- You can find me on Twitter: @_alexaubry
License
HTMLString is available under the MIT license. See the LICENSE file for more info.
💯 Acknowledgements
This library was originally inspired by @google's Toolbox for Mac.

