Reputation: 4345
I want to use Unicode in my code. My Unicode value is 0100 and I am adding my Unicode string \u
with my value. When I use string myVal="\u0100"
, it's working, but when I use like below, it's not working. The value is looking like "\\u1000";
. How do I resolve this?
I want to use it like the below one, because the Unicode value may vary sometimes.
string uStr=@"\u" + "0100";
Upvotes: 0
Views: 2668
Reputation: 9443
There are a couple of problems here. One is that @"\u" is actually the literal string "\u" (can also be represented as "\u").
The other issue is that you cannot construct a string in the way you describe because "\u" is not a valid string by itself. The compiler is expecting a value to follow "\u" (like "\u0100") to determine what the encoded value is supposed to be.
You need to keep in mind that strings in .NET are immutable, which means that when you look at what is going on behind the scenes with your concatenated example (`@"\u"+"0100"), this is what is actually happening:
So you have three strings in memory. In order for that to happen all of the strings must be valid.
The first option that comes to mind for handling those values is to actually parse them as integers, and then convert them to characters. Something like:
var unicodeValue = (char)int.Parse("0100",System.Globalization.NumberStyles.AllowHexSpecifier);
Which will give you the single Unicode character value. From there, you can add it to a string, or convert it to a string using ToString()
.
Upvotes: 3