wrrnw
wrrnw

Reputation: 11

How to get the char from a string that contains unicode escape sequence which starts with "\u"

I did quite a lot of researches but still could not figure it out. Here is an example, I got a string contains "\uf022" (a character from another language), how can I change the whole string into the char '\uf022'?

Update: the string "\uf022" is retrieved during runtime (read from other sources) instead of directly putting a static character into the string.

For example:

string url = "https://somesite/files/abc\uf022def.pdf";
int i = url.IndexOf("\\");
string specialChar = url.substring(i, 6);

How do I get the char saved in the string specialChar?

I would like to use this char to do UTF-8 encoding and generate the accessible URL "https://somesite/files/abc%EF%80%A2def.pdf".

Thank you!

Upvotes: 1

Views: 399

Answers (1)

Caius Jard
Caius Jard

Reputation: 74660

how can I change the whole string into the char '\uf022'?

Strictly speaking, you can't change the characters of the string you have (because strings are immutable), but you can make a new one that meets your demands..

var s = new string('\uf022', oldstring.Length);

Your title of your question reads slightly differently.. it sounds like you want a string that is only the F022 chars, i.e. if your string has 10 chars and only 3 of them are F022, you want just the 3.. which could be done by changing oldstring.Length above, into oldstring.Count(c => c == '\uf022')

..and if you mean your string is like "hello\uf022world" and you want it to be like "hello🍄world" then do

var s = oldstring.Replace("\\uf022", "\uf022");

If you have the \uf022 in a string (6 chars) and you want to replace it with its actual character, you can parse it to int and convert to char when you replace..

var oldstring = "hello\uf022world";
var given = "\uf022";
var givenParsed = ((char)Convert.ToInt32(given.Substring(2), 16)).ToString();
var s = oldstring.Replace(given, givenParsed);

Upvotes: 1

Related Questions