English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
プロジェクトを進める際、ページには敏感な情報があり、「*重要な情報を一部隠したいので、一般的なメソッドを書くことにしました。
それをしましょう!
Method 1:左右の文字数を指定します
Method 1.1 真ん中の*の数と実際の長さに関連しています
/// <summary> /// 敏感情報を隠す /// </summary> /// <param name="info">情報エンティティ</param> /// <param name="left">左側に残す文字数</param> /// <param name="right">右側に残す文字数</param> /// <param name="basedOnLeft">長さが異常な場合に左側を表示するかどうか /// <code>true</code>/code>左側を表示、<code>false</code>/code>右側を表示 /// </param> /// <returns></returns> public static string HideSensitiveInfo(string info, int left, int right, bool basedOnLeft=true) { if (String.IsNullOrEmpty(info)) { return ""; } StringBuilder sbText = new StringBuilder(); int hiddenCharCount = info.Length - left - right; if (hiddenCharCount > 0) { string prefix = info.Substring(0, left), suffix = info.Substring(info.Length - right); sbText.Append(prefix); for (int i = 0; i < hiddenCharCount; i++) { sbText.Append("*"); } sbText.Append(suffix); } else { if (basedOnLeft) { if (info.Length > left && left > 0) { + "****"); } else { sbText.Append(info.Substring(0, 1) + "****"); } } else { if (info.Length > right && right > 0) { sbText.Append("****" + info.Substring(info.Length - right)); } else { sbText.Append("****" + info.Substring(info.Length - 1)); } } } return sbText.ToString(); }
Method 1.2 : 中間の*の個数が固定
/// <summary> /// 敏感情報を隠す /// </summary> /// <param name="info">情報エンティティ</param> /// <param name="left">左側に残す文字数</param> /// <param name="right">右側に残す文字数</param> /// <param name="basedOnLeft">長さが異常な場合に左側を表示するかどうか /// <code>true</code>/code>左側を表示、<code>false</code>/code>右側を表示 /// <returns></returns> public static string HideSensitiveInfo1(string info, int left, int right, bool basedOnLeft = true) { if (String.IsNullOrEmpty(info)) { return ""; } StringBuilder sbText = new StringBuilder(); int hiddenCharCount = info.Length - left - right; if (hiddenCharCount > 0) { string prefix = info.Substring(0, left), suffix = info.Substring(info.Length - right); sbText.Append(prefix); sbText.Append("****"); sbText.Append(suffix); } else { if (basedOnLeft) { if (info.Length > left && left >0) { + "****"); } else { sbText.Append(info.Substring(0, 1) + "****"); } } else { if (info.Length > right && right>0) { sbText.Append("****" + info.Substring(info.Length - right)); } else { sbText.Append("****" + info.Substring(info.Length - 1)); } } } return sbText.ToString(); }
Method 2 : “*”数が一定の場合、設定する4個、情報の全体長の比率で取得し、デフォルトでは左右各1/3
/// <summary> /// 敏感情報を隠す /// </summary> /// <param name="info">情報</param> /// <param name="sublen">情報の全体長と左子文字列(または右子文字列)の比率</param> /// <param name="basedOnLeft">長さが異常な場合に左側を表示するかどうか、デフォルトはtrue、デフォルトで左側を表示}} /// <code>true</code>/code>左側を表示、<code>false</code>/code>右側を表示 /// <returns></returns> public static string HideSensitiveInfo(string info,int sublen = 3,bool basedOnLeft = true) { if (String.IsNullOrEmpty(info)) { return ""; } if (sublen<=1) { sublen = 3; } int subLength = info.Length / sublen; if (subLength > 0 && info.Length > (subLength*2) ) { string prefix = info.Substring(0, subLength), suffix = info.Substring(info.Length - subLength); return prefix + "****" + suffix; } else { if (basedOnLeft) { string prefix = subLength > 0 &63; info.Substring(0, subLength) : info.Substring(0, 1); return prefix + "****"; } else { string suffix = subLength > 0 &63; info.Substring(info.Length-subLength) : info.Substring(info.Length-1); return "****"+suffix; } } }
拡張
電話番号 1
/// <summary> /// 電話番号の詳細を隠す /// </summary> /// <param name="phone">電話番号</param> /// <param name="left">左側に残す文字数</param> /// <param name="right">右側に残す文字数</param> /// <returns></returns> public static string HideTelDetails(string phone, int left = 3, int right = 4) { return HideSensitiveInfo(phone, left, right); }
テスト結果は以下の通りです:
電話番号 2
/// <summary> /// 電話番号の詳細を隠す /// </summary> /// <param name="phone">電話番号</param> /// <param name="left">左側に残す文字数</param> /// <param name="right">右側に残す文字数</param> /// <returns></returns> public static string HideTelDetails(string phone, int left = 3, int right = 4) { return HideSensitiveInfo1(phone, left, right); }
テスト結果は以下の通りです:
メールアドレス
/// <summary> /// 右クリック詳細を隠す /// </summary> /// <param name="email">メールアドレス</param> /// <param name="left">メールヘッダーに残す文字数、デフォルト値は設定されています3</param> /// <returns></returns> public static string HideEmailDetails(string email, int left = 3) { if (String.IsNullOrEmpty(email)) { return ""; } if (System.Text.RegularExpressions.Regex.IsMatch(email, @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"))//メールアドレスの場合 { int suffixLen = email.Length - email.LastIndexOf('@'); return HideSensitiveInfo(email, left, suffixLen,false); } else { return HideSensitiveInfo(email); } }
テスト結果は以下の通りです:
以上は編集者が皆さんに紹介したC#で電話番号、メールアドレスなどの機密情報を隠す方法です。皆さんの助けになりますように。何かご不明な点があれば、コメントを残してください。編集者はすぐに回答します。このサイトへのサポートに感謝します。
声明:本文の内容はインターネットから取得しており、著作権者は所有者であり、インターネットユーザーが自発的に貢献し、自己でアップロードしたものであり、本サイトは所有権を持ちません。また、人工編集は行われていません。著作権侵害が疑われる内容がある場合は、メールで:notice#wまでお知らせください。3codebox.com(メールを送信する際、#を@に置き換えてください。告発を行う場合は、関連する証拠を提供し、確認がとれた場合、本サイトは即座に侵害疑いのコンテンツを削除します。)