これは、C# & .Net Framework 2.0 で作成しました


はじめに
自分用の共通関数の .NET Framework ライブラリです。


動作環境
Microsoft .NET Framework2.0


インストール方法

まず、ランタイム(.NET Framework2.0)をセットアップします。

sCommon.net.lzh をダウンロードします。

ダウンロードしたファイルを解凍しします。
(LHAは、吉崎栄泰氏が、著作権を所有)

sCommonNET.dll を、パスの通ったディレクトリにコピーします。

自らのプログラムで使用できるようになっているかと思います。


削除方法
  1. sCommonNET.dll を削除して、.NET Framework2.0 ランタイムを削除すればよいです。



免責など
修正BSDライセンスで配布します。

(修正BSDライセンスにしても、あまり以前と、ライセンス条項って変わっていないような気がするんだよなぁ〜)


Version2.6.1.2DownLoad(sCommon.net.lzh as 134,560byte) (sCommon.net.lzh.base64)

履歴



リファレンスのベースとなる XML



関数
名前空間 : jp.dip.rocketeer.Common
列挙型 : HttpStreamType
noneHTTP
HTTP
CONNECT
WebDAV
WebSocket
HTTP2
AnontherHTTP


列挙型 : StringType
none
JSON
XML


クラス : httpsProxyStream
Stream を SSL にする際に、1バイト目が特定のバイトの場合は、SSLにしない。・・・という事ができるフィルターストリーム
public HttpsProxyStream(Stream oyaStream)
public HttpsProxyStream(Stream oyaStream, Byte[] hako, Boolean ByteIsSSL)
コンストラクタ
oyaStream:親ストリーム
hako:1バイト目の候補
ByteIsSSL:1バイト目がどれかに一致したらSSL=True
public HttpsProxyStream(Stream oyaStream)は、public HttpsProxyStream(Stream oyaStream, new byte[] { 0x47, 0x67, 0x50, 0x70 }, false)と同義
public Boolean IsSSL { get; } 上位が SSL かどうか示す。TrueならこのストリームにSSLStreamを被せる必要がある


クラス : HttpRequestLineMeta
public String Method HTTPメソッド
public String Scheme スキーム
public String UserName ユーザ名
public String Password パスワード
public String rHost ホスト
public UInt16 rPort ポート
public String Path パス
public String QueryString クエリ文字列
public String Protocol プロトコル(行末の0x0dは含まないようにした)
public HttpStreamType HttpType HTTPのタイプ
public String toString() リクエストラインを再現できると思う
public String URL URLを返す
public IPEndPoint IPEndPoint IPEndPoint を返す


クラス : CommonFunction
public Encoding GetDefaultEncoding() 既定の文字コードを取得する
public static String GetListBroadcastOption(Type iEnum, String ExceptionStr) 列挙型をリストとして取得、カンマ区切りで返す
public static String GetListBroadcastOption2(Type iEnum, String ExceptionStr, String Header, int kosu,int tabMode) 個数ごとに改行と、インデントを入れる
iEnum:対象データ
ExceptionStr:対象外データ
HeaderStr:前方データ
kosu:個数
tabMode:タブの個数
public static Boolean IsStringNull(String iStr) 文字列が空文字列、NULLの場合は True
public static String SubStringEx(String str, int index, int len, int dx) 文字列の一部を前後に余分の部分も含めて切り取る
str:対象文字列
index:最初の位置
len:切り取る長さ
dx:±して余分に切り取る長さ
public static String AddStrimgDerimita(String iStr, String nextStr, String derim) 文字列結合の際 "derim" のデリミタを入れながら結合する
iStr:前方データ
nextStr:対象データ
derim:間に挟む文字
public static IPEndPoint GetIPEndpoint(String iHost, UInt16 iPort) IPEndpoint を返す。iHostは空文字、0.0.0.0 の場合は ANY)
public static IPAddress[] GetIPAddress(String str) IPAddress の配列を返す(引数は、IPv4/v6アドレス、普通のホスト名、国際化ドメイン名)
public static IPAddress GetIPAddressSingle(String str) IPAddress を返す(GetIPAddress() の配列の最初の値)
public static Boolean IsMulticastAddress(String iHost) マルチキャストかどうかを返す
public static IPAddress[] GetMyIPAddress() 自らのインターフェイスにバインドしているIPアドレスを返す
public static Boolean IsMyIPAddress(String iHost) 自らのインターフェイスにバインドしているIPアドレスかどうかを返す
public static void AppendFileFromString(Object LockObj, String fileName, String str) 文字列をファイルへ追記する
public static void AppendFileFromByteArray(Object LockObj, String fileName, byte[] hako, int len)
public static void AppendFileFromByteArray(Object LockObj, String fileName, byte[] hako)
public static int StatusCode(String iStr) HTTPステータスラインを解析して、ステータスコードを返す(失敗した場合は「-1」を返す)
iStr:対象データ
public static Boolean ExistHeader(String iHeaderName,String iHeaderValue,String iStr) ヘッダが存在するかどうか(大文字/小文字は無視)
iHeaderName:ヘッダ名
iHeaderValue:ヘッダの値
iStr:データ
public static Boolean DictionaryContainsNoIgnore<Type>(Dictionary<String, Type> dic, ref String keyName) ディクショナリオブジェクトに大文字/小文字無視でキーの有無を確認する
KeyName にはディクショナリ側のキーが返るので注意(大文字/小文字がとっ散らかる可能性)
public static Dictionary<String, List<String>> SeparateHeader(String[] hako, Boolean MusiLine) 文字配列/文字列から、HTTP ヘッダとして Dictionary オブジェクトを生成する(空行くるとそこで処理を停止する)
hako:文字列の配列(一行ずつ)
MusiLine:一行目を無視するかどうか
public static Dictionary<String, List<String>> SeparateHeader(String str, Boolean MusiLine)
public static void SeparateRequestLineAndHttpType(String iStr, ref String Method, ref String Scheme, ref String UserName, ref String Password, ref String rHost, ref UInt16 rPort, ref String Path, ref String QueryString, ref String Protocol,ref HttpStreamType httpStreamType) HTTPリクエスト・ラインを解析する
iStr:対象データ
Scheme:スキーム
UserName:ユーザ名
Password:パスワード
rHost:ホスト
rPort:ポート
Path:パス
QueryString:クエリ文字列
Protocol:プロトコル
httpStreamType:HTTPのタイプ
public static void SeparateRequestLineAndHttpType(String iStr, out HttpRequestLineMeta iHttpRequestLineMeta) HTTPリクエスト・ラインを解析する
iStr:対象データ
iHttpRequestLineMeta:返却オブジェクト
public static void SeparateRequestLineAndHttpType(String iStr, String[] UrlExtention,String[] SessStr,out HttpRequestLineMeta iHttpRequestLineMeta) HTTPリクエスト・ラインを解析する
iStr:対象データ
UrlExtention:パス上の文字列で、以降をクエリ文字列にする
SessStr:セッションIDとして以降無視してもよい文字列
iHttpRequestLineMeta:返却オブジェクト
これは、URI中の ";jsessionid=xxxxxx" を削ったり、"xxx.php/aaa/bbb/ccc/ddd" を "xxx.php?aaa=bbb&ccc=ddd"と見なすように事が可能
public static void SeparateRequestLineAndHttpType(String iStr, ref String Method, ref String Scheme, ref String UserName, ref String Password, ref String rHost, ref UInt16 rPort, ref String Path, ref String QueryString, ref String Protocol,ref HttpStreamType httpStreamType, UInt16 defoPort) HTTPリクエスト・ラインを解析する
iStr:対象データ
Scheme:スキーム
UserName:ユーザ名
Password:パスワード
rHost:ホスト
rPort:ポート
Path:パス
QueryString:クエリ文字列
Protocol:プロトコル
httpStreamType:HTTPのタイプ
defoPort ポート番号が指定されていない時に既定としたい番号があればそれを指定(0はhttp/80とhttps/443)
public static void SeparateRequestLineAndHttpType(String iStr, out HttpRequestLineMeta iHttpRequestLineMeta, UInt16 defoPort) HTTPリクエスト・ラインを解析する
iStr:対象データ
iHttpRequestLineMeta:返却オブジェクト
defoPort ポート番号が指定されていない時に既定としたい番号があればそれを指定(0はhttp/80とhttps/443)
public static void SeparateRequestLineAndHttpType(String iStr, String[] UrlExtention,String[] SessStr,out HttpRequestLineMeta iHttpRequestLineMeta, UInt16 defoPort) HTTPリクエスト・ラインを解析する
iStr:対象データ
UrlExtention:パス上の文字列で、以降をクエリ文字列にする
SessStr:セッションIDとして以降無視してもよい文字列
iHttpRequestLineMeta:返却オブジェクト
defoPort ポート番号が指定されていない時に既定としたい番号があればそれを指定(0はhttp/80とhttps/443)
これは、URI中の ";jsessionid=xxxxxx" を削ったり、"xxx.php/aaa/bbb/ccc/ddd" を "xxx.php?aaa=bbb&ccc=ddd"と見なすように事が可能
public static void SeparateRequestLineAndHttpTypeWithRequest(String iStr, String[] UrlExtention,String[] SessStr,out HttpRequestLineMeta iHttpRequestLineMeta) HTTPリクエスト・メッセージを解析する(Host ヘッダでホスト名を補完する)
iStr:対象データ
UrlExtention:パス上の文字列で、以降をクエリ文字列にする
SessStr:セッションIDとして以降無視してもよい文字列
iHttpRequestLineMeta:返却オブジェクト
これは、URI中の ";jsessionid=xxxxxx" を削ったり、"xxx.php/aaa/bbb/ccc/ddd" を "xxx.php?aaa=bbb&ccc=ddd"と見なすように事が可能
public static void SeparateRequestLineAndHttpTypeWithRequest(String iStr, String[] UrlExtention,String[] SessStr,out HttpRequestLineMeta iHttpRequestLineMeta, UInt16 defoPort) HTTPリクエスト・メッセージを解析する(Host ヘッダでホスト名を補完する)
iStr:対象データ
UrlExtention:パス上の文字列で、以降をクエリ文字列にする
SessStr:セッションIDとして以降無視してもよい文字列
iHttpRequestLineMeta:返却オブジェクト
defoPort ポート番号が指定されていない時に既定としたい番号があればそれを指定(0はhttp/80とhttps/443)
これは、URI中の ";jsessionid=xxxxxx" を削ったり、"xxx.php/aaa/bbb/ccc/ddd" を "xxx.php?aaa=bbb&ccc=ddd"と見なすように事が可能
public static void SeparateRequestLine(String iStr, ref String Method, ref String Scheme, ref String UserName, ref String Password, ref String rHost, ref UInt16 rPort, ref String Path, ref String QueryString, ref String Protocol) HTTPリクエスト・ラインを解析する
iStr:対象データ
Scheme:スキーム
UserName:ユーザ名
Password:パスワード
rHost:ホスト
rPort:ポート
Path:パス
QueryString:クエリ文字列
Protocol:プロトコル
public static void SeparateRequestLine(String iStr, ref String Method, ref String Scheme, ref String UserName, ref String Password, ref String rHost, ref UInt16 rPort, ref String Path, ref String QueryString, ref String Protocol, UInt16 defoPort) HTTPリクエスト・ラインを解析する
iStr:対象データ
Scheme:スキーム
UserName:ユーザ名
Password:パスワード
rHost:ホスト
rPort:ポート
Path:パス
QueryString:クエリ文字列
Protocol:プロトコル
defoPort ポート番号が指定されていない時に既定としたい番号があればそれを指定(0はhttp/80とhttps/443)
public static void SeparateUrl(String iStr, ref String Scheme, ref String UserName, ref String Password, ref String rHost, ref UInt16 rPort, ref String Path, ref Dictionary<String, List<String>> QSDictionary, Boolean iMode) URL を解析する
iStr:対象データ
Scheme:スキーム
UserName:ユーザ名
Password:パスワード
rHost:ホスト
rPort:ポート
Path:パス
QSDictionary:クエリ文字列
iMode:モード
public static void SeparateUrl(String iStr, ref String Scheme, ref String UserName, ref String Password, ref String rHost, ref UInt16 rPort, ref String Path, ref String QueryString) URL を解析する
iStr:対象データ
Scheme:スキーム
UserName:ユーザ名
Password:パスワード
rHost:ホスト
rPort:ポート
Path:パス
QueryString:クエリ文字列
public static void SeparateSchemeFromURL(String iUrl, ref String Scheme, ref String ansUrl) URL のスキームとスキーム後のURL に分割する
iUrl:対象データ
Scheme:スキーム
ansUrl:パス
public static void SeparateHostFromURL(String iUrl, ref String rHost, ref String ansUrl) URL のホストとその後ろのURL に分割する
iUrl:対象データ
rHost:ホスト
ansUrl:パス
public static void SeparatePathQueryFromURL(String iUrl, ref String Path, ref String Query) URL のパスとクエリに分割する
iUrl:対象データ
Path:パスユーザ名:パスワード
Query:クエリ
public static void SeparateUserHost(String iStr, ref String Authenticate, ref String rHost) 「ユーザ名:パスワード」と「ホスト:ポート」を分割する
iStr:対象データ
Authenticate:ユーザ名:パスワード
rHost:ホスト:ポート
public static void SeparateHostPort(String iStr, ref String rHost, ref String rPort) 「ホスト:ポート」または「ユーザ名:パスワード」を分割する(つまり「:」で分割する)
iStr:対象データ
rHost:ホスト/ユーザ名
rPort:ポート/パスワード
public static void SeparateHostPortIPv6(String iStr, ref String rHost, ref String rPort) 「ホスト:ポート」または「ユーザ名:パスワード」を分割する(つまり「:」で分割する)(IPv6 対応)
iStr:対象データ
rHost:ホスト/ユーザ名
rPort:ポート/パスワード
public static Dictionary<String, List<String>> SplitQueryString(String iStr, Boolean iMode) クエリストリングを分解してDictionary クラスを返す
iStr:対象データ
iMode:True : 「name」のみを許可する,False : 「name」のみは許可しない
public static Dictionary<String, List<String>> SplitQueryString(String iStr, String nameDerim("="), String valueDerim("&"), Boolean iMode) クエリストリングを分解してDictionary クラスを返す
iStr:対象データ
iMode:True : 「name」のみを許可する,False : 「name」のみは許可しない
public static Dictionary<String, List<String>> SplitQueryString(String iStr, String nameDerim("="), String valueDerim("&"), Boolean iMode, Boolean IgnoreCase) クエリストリングを分解してDictionary クラスを返す
iStr:対象データ
iMode:True : 「name」のみを許可する,False : 「name」のみは許可しない
IgnoreCase : 大/小文字を同一視するかどうか
public static String[] SplitMIME(String urlEncodedStr, String MimeDerim) メッセージを MIME として分解し、URLEncodeした文字列として返す。MimeDerim はURLエンコードしていなくてよい
public static String[] SplitMIME(byte[] hako, String MimeDerim)
public static String[] SplitMIME(byte[] hako, int offset, int len, String MimeDerim)
public static String[] SplitMIMEnoURLEncoded(String NoUrlEncodedStr, String MimeDerim) メッセージ(文字列限定のMIME形式)を MIME として分解し、URLEncodeした文字列として返す
public static void SeparateHeaderBody(String buffer, out String header, out String body) 文字列を HTTP メッセージと見立てて、ヘッダ(空行含む)とボディを分解する
public static void SeparateHeaderBody(byte[] buffer, out byte[] header, out byte[] body) バイト配列を HTTP メッセージと見立てて、ヘッダ(空行含む)とボディを分解する
public static String SplitNameAndValue(String iStr, ref String name, ref String value, Boolean iMode) Name=Value の一組を返す。戻り値は、一組以外の残りを返す
iStr:対象データ
name:名前
value:値
iMode:True : 「name」のみを許可する,False : 「name」のみは許可しない
public static String SplitNameAndValue(String iStr, String nameDerim("="), String valueDerim("&"), ref String name, ref String value, Boolean iMode) Name=Value の一組を返す。戻り値は、一組以外の残りを返す
iStr:対象データ
name:名前
value:値
iMode:True : 「name」のみを許可する,False : 「name」のみは許可しない
public static void myBunkatsu(String iStr, String Separator, ref String HeaderStr, ref String FooterStr, Boolean EmptyOption) 文字列を二つに分割して、返す
iStr:対象データ
Separator:分割文字列
HeaderStr:前方文字列
FooterStr:後方文字列
EmptyOption:true の場合は、セパレータがなければ、前方に寄せる,false の場合は、セパレータがなければ、後方に寄せる
TrimArgがNullでなければ Trim する
public static void myBunkatsu(String iStr, String Separator, ref String HeaderStr, ref String FooterStr, Boolean EmptyOption,Char[] TrimArg)
public static Boolean IsMime(String iStr, out String MimeDerim) MIMEかどうかを返す
iStr : HTTPメッセージ
MimeDerim : MIMEの場合はデリミタ文字列
public static String GetHeader(String iStr) 文字列からヘッダ部分(空行まで)を抜き出す。出力は、最後に空行を含む文字列
public static String GetHeaderAttribute(String iStr, String hName, String hValue, String haName) HTTPヘッダから、特定のヘッダの特定の値の時の、特定の属性の値を返す(なければ null)
iStr : HTTPヘッダ
hName : ヘッダの名前
hValue : 値として必要な情報
haName : 属性値の情報
public static void GetHeaderAttributeForMIMEPartHeader(String str, out String strName, out String strFileName) MIME の部分 HTTPヘッダから、名前とファイル名(なければ null)を抜き出す
public static String GetHeaderValue(String iStr, String hName) 文字列からヘッダ名で指定された値を返す
public static String GetHeaderValue(String[] sHako, String hName)
public static String myTrim(String iStr, Char[] TrimArg) TrimArg が Null でなければ、それで Trim する
public static String GetSocketString(System.Net.Sockets.TcpClient iTcpClient) TCP オブジェクトから接続情報を取り出す
iTcpClient:対象
public static String GetSocketString(System.Net.Sockets.TcpClient iTcpClient, Boolean IsServer) TCP オブジェクトから接続情報を取り出す
iTcpClient:対象、IsServer:True(自分はServer),False(自分はクライアント)
public static String GetSocketString(System.Net.Sockets.TcpClient iTcpClient, String motoStr, String sakiStr, Boolean IsServer) TCP オブジェクトから接続情報を取り出す。ホスト名としたい場合は「motoStr/sakiStr」に記述
iTcpClient:対象、IsServer:True(自分はServer),False(自分はクライアント)
public static String mySplit(String iStr, String Separator, int index) 文字列を分割して、返す
iStr:対象データ
Separator:分割文字列
index:xx番目
public static void SetSecurePassword(ref System.Security.SecureString iSecureString, ref String iStr) SecureString へ文字列をセットする
iSecureString:SecureString
iStr:String
public static System.Diagnostics.Process SetProcessStartInfo(String iProgramName, String iArguments, String iWorkingDirectory) 外部プログラム起動用の設定を行う。そして、最後に起動する
iProgramName:プログラム名
iArguments:コマンドラインの引数
iWorkingDirectory:一時ディレクトリのパス
public static Byte[] GetByteArrayFromHexString(String iStr) 16進数文字列をバイト配列にする。2で割り切れない場合は、最後尾に「0」を追加して1Byteにする
iStr:データ
public static void WriteLog(String ServiceName,String Message, int mode, System.Diagnostics.EventLogEntryType iEventLogEntryType, int id) ログを出力する
Message:メッセージ
ServiceName:サービス名
mode:対象(0: コンソール、1:イベントログ)
iEventLogEntryType:イベントログタイプ
level:識別番号
public static UInt32 IsSetNum(String iStr, UInt32 defaultInt) 文字列を数値に置換する(既定値以下は許さない)
iStr:文字列
defaultInt:エラー時の既定値
public static UInt32 IsSetNum2(String iStr, UInt32 defaultInt) 文字列を数値に置換する(0は許さない)
iStr:文字列
defaultInt:エラー時の既定値
public static Int32 String2Int32(String iStr, Int32 defaultInt) 文字列をInt32型にする(正負を認める)
iStr:文字列
defaultInt:エラー時の既定値
public static int MemoryStreamToByteArray(ref MemoryStream mem, byte[] buffer, int offset, int count) メモリストリームをバイト配列へコピーする
mem : メモリーストリーム
buffer:バッファ
offset:オフセット
count:カウント
public static byte[] MemoryStreamToAllByteArray(ref MemoryStream mem) メモリストリームをバイト配列へ全部コピーする
mem : メモリーストリーム
public static int CopyByteArray(byte[] sourceBuf, int sourceOffset, int sourceLen, byte[] distBuf, int distOffset, int distLen) バイト配列をコピーする(バッファサイズなどはチェック済とするのでこちらではチェックしない)
sourceBuf:バッファ(ソース)
sourceOffset:オフセット(ソース)
sourceLen:長さ(ソース)
distBuf:バッファ(ソース)
distOffset:オフセット(ソース)
distLen:長さ(ソース)
public static byte[] MemAlloc(int size) バイト配列をゼロで初期化しつつ作成する
size:配列のサイズ長さ
public static int MemInit(byte[] hako) バイト配列をゼロで初期化しつつ、無駄な値を出力する
public static byte[] HostNameString2Byte(String iStr) 国際化対応のホスト名を(PunnyCode変換してから)バイト配列にする
public static String HostNameString2String(String iStr) 国際化対応のホスト名を(PunnyCode変換してから)バイト配列にする
public static String AddDotHostameToFQDN(String hostname) 空文字でなければ、小文字にして最後が「.」でないと「.」を付ける
public static byte[] File2AllByteArray(String fileName) ファイル内容を読み込んでバイト配列に取り込む
public static byte[] ByteArrayIsNull(byte[] buffer) バイト配列が NULL または 0個の配列なら NULL を返す
public static Boolean ReadHeaderFromStream(ref Stream stream,out byte[] hako) 空行まで読み取る(つまりヘッダだけ読み取る)。ストリームの終端まで読み込んでしまったらTrueを返す
public static Boolean ReadHeaderFromStreamIgnoreSpaceLine(ref Stream stream,out byte[] hako) 空行まで読み取る(つまりヘッダだけ読み取る)(ただし最初の空行は無視)。ストリームの終端まで読み込んでしまったらTrueを返す
public static Boolean ReadLineFromStream(ref Stream stream,out byte[] hako) Lf まで読み取る。ストリームの終端まで読み込んでしまったらTrueを返す
public static Boolean ReadLineFromStreamIgnoreSpaceLine(ref Stream stream,out byte[] hako) Lf まで読み取る。ただし空行は無視する。ストリームの終端まで読み込んでしまったらTrueを返す
public static Boolean ReadToMarkFromStream(ref Stream stream, byte b,out byte[] hako) マークが示すバイトが見つかるまで読み取る。ストリームの終端まで読み込んでしまったらTrueを返す
public static Byte[] Base16ExDecode(String str)
public static Byte[] Base16ExDecode(String str, Char c)
public static Byte[] Base16ExDecode(String str, Char[] cHako)
変則的な Base16をデコードする
public static String Base16ExEncode(Byte[] hako)
public static String Base16ExEncode(Byte[] hako, Char c)
public static String Base16ExEncode(Byte[] hako, Char[] cHako)
変則的な Base16をエンコードする
Base16ExEncode(Byte[] hako, new Char[]{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'})が、普通の Base16
public static String AddCannma(String source) 3桁ずつカンマを挿入する
String source : 対象文字列
public static String StringRight(String source, int len, char spaceChar) 対象文字列を右詰めで出力する
String source : 対象文字列
int len : 出力する文字列長
char spaceChar : 左に詰める文字
public static int CreateCodePointFromCharArray(char[] hako, int index, out UInt32 codePoint) Char 配列から、1文字(サロゲートペアなら2文字)取り出して、コードポイントを out に返す(使った文字数をリターン)
char[] hako : 対象文字配列
int index :配列での位置
out UInt32 codePoint : 出力されるコードポイント
返値 : 使用したCharの個数
public static Char[] CreateCharFromCodePoint(UInt32 codepoint) UNICODE コードポイントから文字(サロゲートペアもあるので、Char[] 配列)を出力する
UInt32 codePoint : UNICODE コードポイント
public static String JISKANJI1 第一水準漢字一覧を返す
public static String JISKANJI2 第二水準漢字一覧を返す
public static String JISantiKANJI1 漢字以外を返す
public static String JISHIRAGANA 平仮名を返す
public static String JISKATAKANA カタカナを返す
public static String JISOOMOJI 英大文字を返す
public static String JISKOMOJI 英小文字を返す
public static String JISNUMERIC 数字を返す
public static String JISSYMBOL 半角記号を返す
public static String JISYankyBase ヤンキー50音文字を示す
public static String JISHIRAGANABase ヤンキー50音文字に対応した全角ひらがなの50音
public static String HiraToYanky(String iStr) 全角ひらがなをヤンキー50音文字に置換する
public static String YankyToHira(String iStr) ヤンキー50音文字を全角ひらがなに置換する
public static String Yanky2Hira(String iStr,String moto,String saki) 対象文字列「iStr」内の対象文字リスト「moto」を一文字ずつ置換文字リスト「saki」に置換する
public static String ReplaceOnce(String iStr, String searchStr, String replaceStr, int offset) 一度だけ置換する(VisualBASICの関数を使う)
iStr : 対象文字列
searchStr : 検索文字列
replaceStr : 置換文字列
offset : オフセット(開始位置)
public static String CreateXMLElement(String name, String value) value だけ HTMLEncode して、「<name>value</name>」という文字列を返す
public static String SQLEscape(String iStr, Boolean IsBSla, String escapeChar) SQL エスケープを実施する
iStr : 対象文字列
IsBSla : バックスラッシュをエスケープするかどうか
escapeChar : 正規表現(「_」と「%」のエスケープ文字)
public StringType CalculateStringFormat(String sourceStr, Encoding encoding, out Boolean IsUrlEncoded) 文書の形式(JSON/XML/その他)を判断する
public Boolean IsContentTypeJson(String headerStr) Content-TypeがJSONかどうか
public Boolean IsContentTypeXml(String headerStr) Content-TypeがXMLかどうか
public static String EasyURLEncode(String iStr) 最低限の URL エンコードを実施する
対象文字:「%20」「=」「&」「\n」「\r」「\t」「%2b」
public static String EasyURLDecode(String iStr, Char c) 一文字だけ URL デコードする。「IsTargerPersentChar=true」の場合は「%25」→「%」も実施する
public static String EasyURLDecode(String iStr, Char c, Boolean IsTargerPersentChar)
public static Char[] NeedLessCharHako(Char[] hako) データ処理時に大抵は、不要な文字の配列を返す
対象文字:「スペース」「\r」「\n」「\t」。引数には追加分
public static int IndexOfSpaceLine(String iStr, int st, out int BingoLen) 空行までの位置(「\n\n」または「\r\n\r\n」の近い方を探す。なければ「-1」)
iStr : 対象文字列
st : スタート位置
BingoLen : 一番近いやつの文字列長
public static int IndexOfChars(String iStr,int st,String[] hako,out int BingoLen) いくつかの文字列の位置を調べて、一番近いやつの位置を返す(全部見つからなければ-1を返す)
iStr : 対象文字列
st : スタート位置
hako : 対象文字列の配列
BingoLen : 一番近いやつの文字列長
public enum TimeEnum TimeEnum.Years
TimeEnum.Months
TimeEnum.Days
TimeEnum.Hours
TimeEnum.Minutes
TimeEnum.Seconds
TimeEnum.MilliSeconds
public static int IntervalTime(DateTime from, DateTime to,TimeEnum iType) 時間差を計算する
public static String UnixTimeToDateString(UInt64 i,Boolean IsUTC) UNIXtime を「YYYY/MM/DD hh:mm:ss」の文字列にして返す
public static String DateString(DateTime dt) DateTime 型を文字列に出力する
public static List<String> CreateListStringFromCSV(String iStr) CSV 形式の文字列を List オブジェクトにする
public static String EscapeCSV(String iStr) CSV 形式のカラムに合うようにエスケープ(「"」→「""」,「改行コード」→「\r(0x0d)」)して、全体を「"」で囲みます。
public static String StringFromDPAPI(String EncrptedBase64Text, String entropy)
public static String StringFromDPAPI(String EncrptedBase64Text, byte[] entropy)
DPAPIを使って、Base64化された暗号文を元に戻す
public static String StringToDPAPI(String plainText, String entropy)
public static String StringToDPAPI(String plainText, byte[] entropy)
DPAPIを使って、平文をBase64化された暗号文にする
public static byte[] CreateEntropy(int len) ランダムなバイト配列を作成する
public static Boolean IsBSON(String str)
public static Boolean IsBSON(String str, Encoding e)
URLエンコードされた文字列がBSONかどうか簡易的に判定する
  • 6バイト以上
  • 先頭4バイト(リトルエンディアン)でデータ長
  • 最終端はNULL(0x00)
public static Boolean IsBSON(Byte[] hako) バイト配列がBSONかどうか簡易的に判定する
  • 6バイト以上
  • 先頭4バイト(リトルエンディアン)でデータ長
  • 最終端はNULL(0x00)
public static void JsonZone(Char[] cHako, ref Int64 startIndex, ref Int64 length) 文字列から JSON 形式の範囲を返す({〜} または [〜]。中身に"〜" (\エスケープ有) )
JSON 形式の Valid 性は見ていない
cHako ; 文字列
startIndex ; 開始位置を入れる。開始位置を返す(-1 の場合、JSON 形式はない)
length ; 長さ(-1の場合、最後までが範囲) (-1の場合、JSON 形式が途切れた)


クラス : CommonMailFunction
public const int LenPerLine = 76 1行あたりの文字数
public static Boolean IsNet45OrNewer() .NET Framework のバージョン「4.0(false)」と「4.5(true)」を区別する
public static String ReplaceDot(String) Hiden Dot Algorithm エスケープを実施する
public static Boolean IsAscii(String) 入力文字列が全て ASCII 文字なら True
public static Regex IsAsciiRegex 入力文字列が全て ASCII 文字かどうかの正規表現(^[0-9a-z\\(){}<>\[\]!\"'#$%&\-+/_=^~*,.`@]+$)
public static String SplitCrLf(String iStr) ヘッダなど改行が不要なものに対して改行を消去する
public static List<String> SepalateStringMaxLen(String, int) 入力文字列を最大文字数を制限として分解する
第一引数: 対象文字列
第二引数: 最大文字数
public static String CreateMIMEString(String iStr, String iCharSet, bool EncodeMode) 入力文字列を題名として適切なように MIME エンコードする(ASCII文字だけなら特に何もしない)
第一引数: 対象文字列
第二引数: 文字コード
第三引数: True:Base64, False:Quoted-Printable
public static String CreateMIMEStringWrap(String, String, bool, int) 入力文字列を題名として適切なように MIME エンコードする(適切なサイズに継続行(半角スペースをデリミタとしている)を施しながら)
第一引数: 対象文字列
第二引数: 文字コード
第三引数: True:Base64, False:Quoted-Printable
第四引数: 文字数/行(大抵は76)
public static String CreateMIMEStringWrap(String, String, bool) 入力文字列を題名として適切なように MIME エンコードする(76文字ずつに継続行(半角スペースをデリミタとしている)を施しながら)
第一引数: 対象文字列
第二引数: 文字コード
第三引数: True:Base64, False:Quoted-Printable
public static String SetMailMessage(MailMessage, String, Encoding, String, Encoding,int) MailMessage の題名と本文を設定する
第一引数: 対象
第二引数: 題名
第三引数: 題名の文字コード
第四引数: 本文
第五引数: 本文の文字コード
第六引数: モード(-1:自動判別{OldStyle[.NET4.5の時"mode=3"]})、0:自動判別[.NET4.5の時"mode=4"]、1:.NET2.0、2:.NET4.0、3:.NET4.5(OldStyle)、4:.NET4.5(UTF8の新スタイル)


クラス : MailAddressGroup
public MailAddress FromAddress 送信元メールアドレス
public MailAddress SenderAddress 送信者のメールアドレス
public MailAddressCollection ReplyToAddresses 返信先のメールアドレスリスト
public MailAddressCollection ToAddresses 宛先のメールアドレスリスト
public MailAddressCollection CcAddresses CC メールアドレスリスト
public MailAddressCollection BccAddresses BCC メールアドレスリスト
public void SetMailAddressToMailMessage(MailMessage) MailMessageオブジェクトの各プロパティに保持しているメールアドレスをコピーする(.NET2.0のため ReplayTo は最初のアドレスだけ)
public static void MailListCopy(MailAddressCollection, MailAddressCollection) 第一引数のメールアドレスコレクションを第二引数のメールアドスレコレクションに重複しないようにコピーする
public void SetFromAddress(String) 送信元メールアドレスをセットする
public void SetSenderAddress(String) 送信者のメールアドレスをセットする
public void SetReplyToAddress(String) 返信先のメールアドレスリストをセットする
public void SetReplyToAddressFromFile(String) ファイルから返信先のメールアドレスリストをセットする
public void SetToAddress(String) 宛先のメールアドレスリストをセットする
public void SetToAddressFromFile(String) ファイルから宛先のメールアドレスリストをセットする
public void SetCcAddress(String) CCメールアドレスリストをセットする
public void SetCcAddressFromFile(String) ファイルからCCメールアドレスリストをセットする
public void SetBccAddress(String) BCCメールアドレスリストをセットする
public void SetBccAddressFromFile(String) ファイルからBCCメールアドレスリストをセットする
public static MailAddress GetMailAddress(String) 文字列をメールアドレスオブジェクトにして返す


クラス : RegistryAndXML
public static String regOn = "on"
public static String regOff = "off"
public static Boolean StringToBoolForCheckBox(String iStr) チェックボックスコントロール用のBool値(checkedプロパティ)を文字列から取得する
public static String BoolToStringForCheckBox(Boolean iBool) チェックボックスコントロール用のBool値(checkedプロパティ)を文字列にする
public static String GetRegValue(RegistryKey iKey, String ValueName) レジストリから文字列型として抜き出す
public static XmlElement GetKeysFromRegistry(RegistryKey iRegistryKey,XmlDocument iXmlDocument) レジストリを読み取りXMLオブジェクトを出力する
public static XmlDocument GetSettingFromRegistry(String baseRegKeyPath, String RegKeyName) レジストリからデータを取り出し、XML形式として返す
public static void SettingSaveToRegistry(XmlNode iXmlNode, String regPath) レジストリに設定を保存する
public static void SettingSaveToRegistry(XmlNode iXmlNode, RegistryKey iKey, String KeyName) レジストリに設定を保存する(開いているレジストリキーと、キー名(XMLオブジェクトの位置)は、ひとつずれているよ)
public static void DeleteRegistry(String regPath, String KeyName) レジストリを削除する
public static void AppendChild(XmlDocument obj, ref XmlElement OyaXmlElement, String iName, CheckBox iCheckBox)
public static void AppendChild(XmlDocument obj, ref XmlElement OyaXmlElement, String iName, Boolean iBool)
public static void AppendChild(XmlDocument obj, ref XmlElement OyaXmlElement, String iName, String iValue)
public static void AppendChild(XmlDocument obj, ref XmlElement OyaXmlElement, String iName, String iValue,Boolean IsXML)
親のエレメントに追加していく
IsXML : コントロールから取得したデータをXML形式とみなすかどうか
public static XmlElement CreateXMLFromList(String name, System.Collections.IList iList, XmlDocument iXmlDocument, Boolean IsXML) iList リストボックスから取得したリストを name のキーを作って、iXmlDocument 配下に作成する
public static XmlElement CreateXMLFromCheckedList(String name, CheckedListBox icListBox, XmlDocument iXmlDocument, Boolean IsXML, String CheckedName) チェックリストボックスから取得したリストを name のキーを作って、iXmlDocument 配下に作成する(チェックの有無は CheckedName で指定された値)


列挙子 : KeySizeCalculateConditionType
equal 一致しなければならない
moreThan 最小値とする
lessThan 最大値とする


クラス : CipherSupport
public static int CalculateKeySize(int KeyLen, int[] ByteLenHako, KeySizeCalculateConditionType mode) キーのサイズにピッタリ収まるようにバイト配列のサイズを計算する
KeyLen:元の長さ
ByteLenHako : 小さい順に並んだ鍵の長さ(バイト)
mode : リストに対しての条件
public static byte[] GetKeyByteHako(byte[] key, int[] ByteLenHako, KeySizeCalculateConditionType mode) 鍵サイズに合わせて返す(3DES の鍵(16/24Byte)を返す)
key : 元になる鍵
ByteLenHako : 小さい順に並んだ鍵の長さ(バイト)
mode : リストに対しての条件
public static byte[] GetKeyHako(byte[] hako, int ByteLen) キーのサイズにピッタリ収まるようにバイト配列を出力する
hako : 元になるデータ
ByteLen : バイトサイズ
public static byte[] GetKeyReguByteHako(byte[] hako, uint size) size倍になるようにバイト配列を作成する
key : 元になるデータ
size : n倍
public static int[] CalculateKeySize(KeySizes[]) SymmetricAlgorithm オブジェクトの KeySizes 配列を第一引数として、有効な鍵のサイズの配列を作成する(.NET 標準のICryptoTransform)
public static PasswordAlgorithmType PasswordModeAlgorithmCode(String) パスワードハッシュ方式名から、パスワードハッシュ方式モードを返す
public static String FixEnumName(String) 列挙型として適切な大文字/小文字をあわせた文字列を返す
public enum PasswordAlgorithmType パスワードとして乱数化できるアルゴリズムに関して
none,
PBKDF1, // PasswordDeriveBytes
PBKDF2 // RFC2898,Rfc2898DeriveBytes


列挙子 : PasswordAlgorithmType
public enum PasswordAlgorithmType パスワードとして乱数化できるアルゴリズムに関して
none,
PBKDF1, // PasswordDeriveBytes
PBKDF2 // RFC2898,Rfc2898DeriveBytes


クラス : SecretData
public void SetSecretHex(String iStr)
public void SetSecret(byte[] hako)
シークレットをセットする
public byte[] GetSecret() シークレットを取得する
public int Length() シークレットの長さ取得する


abstract クラス : MThreadList
参照カウンタを内蔵して、Add() 時は常にシングルスレッドとなるようにしている
protected IList<Object> List リスト・オブジェクト
protected virtual void init() 初期化、子クラスで上書きしても良い
public Object Select(int mode, Object obj) 参照したり削除したり、更新したりする(mode=0以下:参照、1:初期化、2:追記.....)
obj は対象のオブジェクト
protected abstract void Add(int mode, Object obj); 追加、削除するメソッドは子クラスで実装する(mode=2以上)
obj は対象のオブジェクト
protected virtual Object SelectMain(Object Obj); 参照するメソッドは子クラスで実装する
obj は対象のオブジェクト
SelectMain2(0, Obj) へリダイレクトする
protected abstract Object SelectMain2(int mode, Object Obj); (mode は 0 以下)参照するメソッドは子クラスで実装する
obj は対象のオブジェクト


クラス : GACload
GAC内部のDLLをロードするためにDLLのパスを取得する
public static String GACPathWithEnvironment(String name, String enviromnemtName) アセンブリ名と、インストール先ディレクトリを格納した環境変数を引数にして、DLLパスを取得する
public static Assembly GACPathLoadAssembly(String name)
public static String GACPath(String name)
アセンブリ名(例えば"IronPython")を指定してDLLパス、またはアセンブリオブジェクトを取得する
public static String GACPathWithDirectoryPath(String name, String[] directoryPathHako) アセンブリ名と、インストール先ディレクトリの候補となるパスの配列を引数にして、DLLパスを取得する
public static String GetGACPath(String name, DirectoryInfo directoryInfo) ディレクトリ直下に引数のアセンブリ名のディレクトリがあるという想定で、探索する
public static String GetDLLPath(String name, DirectoryInfo directoryInfo) ディレクトリ直下を再帰的に「アセンブリ名.dll」というファイル・パスを探索する


クラス : PrivateRegexEx
正規表現の拡張。IsMatch() 時に、マッチしたけど、最終的にTrueかFalseかIsMatchBool値で返す値を変えることができるクラス
public static PrivateRegexEx Create(String str, Boolean iIsIgnoreCase, Boolean iIsRegex, Boolean iIsMatchBool) PrivateRegexExオブジェクトを生成する。strが空文字列の場合、nullを返す
public Boolean IsMatchBool { get; set; } マッチしたのだけど、最終的にTrueなのか、Falseなのか
public new Boolean IsMatch(String str) マッチするかどうか、最終的にTrueかどうか・・・





mail to active@window.goukaku.com