This currently contains char and string utilities targeting .NET Standard 2.0
Console.OutputEncoding = Encoding.UTF8; // use a terminal that supports emojis
CharEscapeOptions ceOptions = new CharEscapeOptions(escapeLanguage: CharEscapeLanguage.CSharp, escapeLetter: CharEscapeLetter.LowerCaseU4, escapeLetterFallback: CharEscapeLetter.LowerCaseU4, surrogatePairEscapeLetter: CharEscapeLetter.UpperCaseU8, useLowerCaseHex: false, useShortEscape: true);
StringEscapeOptions seOptions = new StringEscapeOptions(escapeKind: StringEscapeKind.EscapeNonAscii, escapeSurrogatePairs: true);
CharUnescapeOptions uOptions = new CharUnescapeOptions(escapeLanguage: CharEscapeLanguage.CSharp, isUnrecognizedEscapeVerbatim: true);
char cOriginal = 'Ä';
string cEscaped = CharUtils.Escape(cOriginal, escapeOptions: ceOptions, addQuotes: true);
char cUnescaped = CharUtils.Unescape(cEscaped, unescapeOptions: uOptions, removeQuotes: true);
Console.WriteLine(cEscaped); // '\u00C4'
Console.WriteLine(cUnescaped); // Ä
string sOriginal = "abc ABC 123 ÄÖÜ ㄱㄴㄷ 😁😃😓";
string sEscaped = StringUtils.Escape(sOriginal, stringEscapeOptions: seOptions, charEscapeOptions: ceOptions, addQuotes: true);
string sUnescaped = StringUtils.Unescape(sEscaped, unescapeOptions: uOptions, removeQuotes: true);
Console.WriteLine(sEscaped); // "abc ABC 123 \u00C4\u00D6\u00DC \u3131\u3134\u3137 \U0001F601\U0001F603\U0001F613"
Console.WriteLine(sUnescaped); // abc ABC 123 ÄÖÜ ㄱㄴㄷ 😁😃😓
Supported C# escape sequences:
\'
(Single quote)\"
(Double quote)\\
(Backslash)\0
(Null)\a
(Alert)\b
(Backspace)\f
(Form feed)\n
(New line)\r
(Carriage return)\t
(Horizontal tab)\v
(Vertical tab)\uHHHH
(Unicode escape sequence)\xH
or\xHH
or\xHHH
or\xHHHH
(Variable length unicode escape sequence)\UHHHHHHHH
(Unicode escape sequence for surrogate pairs)
Supported quote types:
'Char'
"String"
Console.OutputEncoding <- Encoding.UTF8 // use a terminal that supports emojis
let ceOptions = new CharEscapeOptions(escapeLanguage = CharEscapeLanguage.FSharp, escapeLetter = CharEscapeLetter.LowerCaseU4, escapeLetterFallback = CharEscapeLetter.LowerCaseU4, surrogatePairEscapeLetter = CharEscapeLetter.UpperCaseU8, useLowerCaseHex = false, useShortEscape = true)
let seOptions = new StringEscapeOptions(escapeKind = StringEscapeKind.EscapeNonAscii, escapeSurrogatePairs = true)
let uOptions = new CharUnescapeOptions(escapeLanguage = CharEscapeLanguage.FSharp, isUnrecognizedEscapeVerbatim = true)
let cOriginal = 'Ä'
let cEscaped = CharUtils.Escape(cOriginal, escapeOptions = ceOptions, addQuotes = true)
let cUnescaped = CharUtils.Unescape(cEscaped, unescapeOptions = uOptions, removeQuotes = true)
printfn "%s" cEscaped // '\u00C4'
printfn "%c" cUnescaped // Ä
let sOriginal = "abc ABC 123 ÄÖÜ ㄱㄴㄷ 😁😃😓"
let sEscaped = StringUtils.Escape(sOriginal, stringEscapeOptions = seOptions, charEscapeOptions = ceOptions, addQuotes = true)
let sUnescaped = StringUtils.Unescape(sEscaped, unescapeOptions = uOptions, removeQuotes = true)
printfn "%s" sEscaped // "abc ABC 123 \u00C4\u00D6\u00DC \u3131\u3134\u3137 \U0001F601\U0001F603\U0001F613"
printfn "%s" sUnescaped // abc ABC 123 ÄÖÜ ㄱㄴㄷ 😁😃😓
Supported F# escape sequences:
\a
(Alert)\b
(Backspace)\f
(Form feed)\n
(Newline)\r
(Carriage return)\t
(Tab)\v
(Vertical tab)\\
(Backslash)\"
(Quotation mark)\'
(Apostrophe)\DDD
(Decimal escape sequence; 000-255)\xHH
(Hexadecimal escape sequence; 00-FF)\uHHHH
(Unicode escape sequence)\UHHHHHHHH
(Unicode escape sequence for surrogate pairs)
Supported quote types:
'Char'
"String"
Add-Type -Path '/path/to/Net.Laceous.Utilities.dll'
$ceOptions = [Net.Laceous.Utilities.CharEscapeOptions]::New('PowerShell', 'LowerCaseU4', 'LowerCaseU4', 'LowerCaseU5', $false, $true)
$seOptions = [Net.Laceous.Utilities.StringEscapeOptions]::New('EscapeNonAscii', $true)
$uOptions = [Net.Laceous.Utilities.CharUnescapeOptions]::New('PowerShell', $true)
$sOriginal = "abc ABC 123 ÄÖÜ ㄱㄴㄷ 😁😃😓"
$sEscaped = [Net.Laceous.Utilities.StringUtils]::Escape($sOriginal, $seOptions, $ceOptions, $true)
$sUnescaped = [Net.Laceous.Utilities.StringUtils]::Unescape($sEscaped, $uOptions, $true)
Write-Host $sEscaped # "abc ABC 123 `u{00C4}`u{00D6}`u{00DC} `u{3131}`u{3134}`u{3137} `u{1F601}`u{1F603}`u{1F613}"
Write-Host $sUnescaped # abc ABC 123 ÄÖÜ ㄱㄴㄷ 😁😃😓
Supported PowerShell escape sequences:
`0
(Null)`a
(Alert)`b
(Backspace)`e
(Escape)`f
(Form feed)`n
(New line)`r
(Carriage return)`t
(Horizontal tab)`v
(Vertical tab)``
(Backtick - listed here)`"
(Double quote - listed here)`u{H}
or`u{HH}
or`u{HHH}
or`u{HHHH}
or`u{HHHHH}
or`u{HHHHHH}
(Variable length unicode escape sequence)
Supported quote types:
"String"
- interpolation isn't supported