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)\xHor\xHHor\xHHHor\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