特殊文字はエスケープしたりエンコードしたりする必要がありますが、どの文字が特殊文字にあたるかは用途に応じて異なり、その用途に応じてエスケープやエンコードの方法やメソッドも変わってきます。
環境
- .NET Core 2.2
C# コード中のエスケープ
ファイルパスなど表す場合、文字列中の ¥
をエスケープする必要がありますが、@
を使えばエスケープが不要になります。
using System;
public class Program
{
public static void Main()
{
var str = @"C:\path\hoge";
Console.WriteLine(str);
}
}
実行結果
C:\path\hoge
正規表現で使用する文字をエスケープ
正規表現で使用される文字をエスケープしたい場合は Regex.Escape
を使います。
半角スペースと ().*[]!#%$
の文字をエスケープしてくれます。
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
var str = Regex.Escape("().*[]!#%$");
Console.WriteLine(str);
}
}
実行結果
\ \(\)\.\*\[]!\#%\$
HTML で使用する文字をエンコード
HTML で使用する <
>
&
などの文字をエンコードしたい場合、HttpUtility.HtmlEncode
を使用します。
using System;
using System.Web;
public class Program
{
public static void Main()
{
var str = HttpUtility.HtmlEncode("<\">&'");
Console.WriteLine(str);
}
}
実行結果
<">&'
JavaScript で使用する文字をエンコード
Razor を使っていると、C# で JavaScript のコードを出力することもあります。
このようなときは HttpUtility.JavaScriptStringEncode
を使って '
と "
をエンコードできます。
using System;
using System.Web;
public class Program
{
public static void Main()
{
var str = HttpUtility.JavaScriptStringEncode("'");
Console.WriteLine(str);
}
}
実行結果
\u0027