I have a string that has special characters like this example: 12345678912\rJ\u0011 because I need to have access to this special chars to configure my application. I want to display this string exactly like this in a TextBox field so everything I have tried so far results in a string where the character \u0011
tries to render with an empty character at the end: "7896104866061\rJ"
.
I made this but it doesn't work.
string result = Regex.Replace(
ToLiteral(this.Buffer),
"[^\x00-\x7Fd]",
c => string.Format("\\u{0:x4}", (int)c.Value[0]))
.Replace(@"\", @"\\");
public static string ToLiteral(string input)
{
using (var writer = new StringWriter())
{
using (var provider = CodeDomProvider.CreateProvider("CSharp"))
{
provider.GenerateCodeFromExpression(
new CodePrimitiveExpression(input),
writer,
null);
return writer.ToString();
}
}
}
What need I do? Thanks in advance.
Here my snippet to display ctrl chars: https://gist.github.com/TheTrigger/6efa6a8e42eedf1e61e0db8e9ef4360a
using System.Text;
namespace CtrlCharReplace
{
public static class Extensions
{
public static string ReplaceCtrl(this string s)
{
var sb = new StringBuilder();
for (int i = 0; i < s.Length; i++)
{
char c = s[i];
var isCtrl = char.IsControl(c);
var n = char.ConvertToUtf32(s, i);
if (isCtrl)
{
sb.Append($"\\u{n:X4}");
}
else
{
sb.Append(c);
}
}
return sb.ToString();
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With