カテゴリー
C#

[C#]タブ区切り(TSV)のファイルを項目単位に読み取る

C#でタブ区切りのファイルを開き、1項目ずつ読み取る方法を紹介します。

//区切り文字設定
char[] delimiter = new char[] { '\t' };

//ファイルストリームリーダー作成
// InputFilePath にはタブ区切りファイルのパスを指定して下さい。
StreamReader reader = new StreamReader(InputFilePath);

//ファイルレコードが存在するまでループ
while (reader.Peek() >= 0)
{
    //読み取った行をタブで区切り、文字列配列に格納
    string[] cols = reader.ReadLine().Split(delimiter);

    //項目値取得
    col1value = cols[0];
    col2value = cols[1];
    col3value = cols[2];
}

1. 区切り文字の指定

今回の区切り文字であるタブを指定します。

char[] delimiter = new char[] { '\t' };

2. ファイルリーダーの作成

ファイルリーダーを作成します。InputFilePathには、読み込むタブ区切りのファイルパスを指定して下さい。

StreamReader reader = new StreamReader(InputFilePath);

3. ファイルレコードが存在するまでループ

while (reader.Peek() >= 0)
{
 ...
}

4. ファイルを1行読み取って、指定した区切り文字で分割して、文字列配列に格納

string[] cols = reader.ReadLine().Split(delimiter);

5. 各項目の値を取得

    col1value = cols[0];
    col2value = cols[1];
    col3value = cols[2];
カテゴリー
JavaScript

[超簡単]MarkEd js を使用してmarkdownからhtmlへの変換を行う方法

超簡単です。ブラウザ側で、Markdown から HTML に変換して、表示します。

1. ソースコード

  • HTML
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>

<div id="IDDivHtmlArea"></div>
  • JavaScript
var IDDivHtmlArea = document.getElementById("IDDivHtmlArea");

IDDivHtmlArea.innerHTML = marked(’# This is Markdown Header’);

これだけです。これだけで、「# This is Markdown Header」がHTML に変換されて表示されます。

2. まず、変換後のHTMLを表示するDivエリアを作成する

まず、HTML で 「IDDivHtmlArea」というID でDivタグを作成します。この中に、Markdown から変換されたHTML文章が表示されます。

3. CDN からライブラリを読み込み

https://cdn.jsdelivr.net/npm/marked/marked.min.js ここから取得します。

4. marked 関数を使用して、MarkdownからHTMLに変換する

marked(’# This is Markdown Header’);

これだけですね。これをIDDivHtmlAreaにセットすれば、完了です。

5. 公式URL

https://github.com/markedjs/marked

カテゴリー
C#

[C#]コピー先にディレクトリが存在しない場合、作成してコピーする方法

C# でファイルをコピーする際に、コピー先のディレクトリが存在しない場合はエラーになります。

ファイルコピーする前にディレクトリ存在チェックを行い、存在しない場合は作成してからファイルコピーする関数を作成しましたので、紹介します。

        static void CreateDirAndCopyFile(string sourceFullPath, string distFullPath)
        {
            string distDir = Path.GetDirectoryName(distFullPath);
            if(!Directory.Exists(distDir)){
                Directory.CreateDirectory(distDir);
            }

            File.Copy(sourceFullPath, distFullPath, true);
        }

1. 引数は「コピー元のファイルフルパス」と「コピー先のファイルフルパス」

普通のコピーコマンドと同じような引数構成にしています。戻り値はありませんので、必要であればカスタマイズしてみてください。

2. コピ先ファイルフルパスから、ディレクトリパスを取得

フルパスからディレクトリパスを取得するには、以下の関数を使用します。

string distDir = Path.GetDirectoryName(distFullPath);

Path.GetDirectoryName 関数を使用します。戻り値にディレクトリパスが設定されます。

3. ディレクトリ存在チェック

ディレクトリ存在チェックを行うには、以下のように記述します。

Directory.Exists(distDir)

ディレクトリが存在する場合は「true」、存在しない場合は「false」が戻り値になります。

4. ディレクトリを作成する

ディレクトリを作成するには、以下のように記述します。

Directory.CreateDirectory(distDir)

Directory.CreateDirectory 関数にディレクトリパスを引数として設定すると、ディレクトリが作成できます。

5. ファイルをコピーする

File.Copy(sourceFullPath, distFullPath, true);

File.Copy 関数でファイルをコピーします。第三引数は、上書きするかどうかを指定します。Trueの場合、上書きします。

カテゴリー
VBA

VBAでハッシュテーブルを実装する

ハッシュテーブルは、キーと値の組み合わせを複数個格納して、キーを使って素早く値を取り出すデータ構造です。

これをVBAで実装する方法を紹介します。

0. ハッシュテーブルを使うと、どんなメリットがあるの?

コード量が少なくなり、処理速度が早くなるかもしれません。たとえば、

Type KeyValueType
    Key As String
    Value As String
End Type

Dim KeyValue() As KeyValueType

こんな変数があったとして、KeyをベースにValueを取得する場合、配列だと添字の最初から最後までループでまわしてIF文で判定するようなロジックが考えられますが、ハッシュテーブルを使うと1行で実装できます。

1. ハッシュテーブルオブジェクトの定義

VBAでハッシュテーブルを実装するには、Scripting.Dictionary オブジェクトを使用します。

Dim HashTable            As Object
Set HashTable = CreateObject("Scripting.Dictionary")

2. Add メソッドで値を登録

Add メソッドを使用してハッシュテーブルに値を登録します。

HashTable.Add Key, Value

Key と Value を引数にセットして、ハッシュテーブルに登録します。

HashTable.Add “Apple”, “100”

このようにすると、「Apple」というキーで「100」という値をハッシュテーブルに格納します。

3. ハッシュテーブルから値を取得する

Value = HashTable(Key)

キーを引数にとって値を返します。簡単ですね。

Value = HashTable(“Apple”)

このようにすると、Valueには先ほど登録した「100」がセットされます。

4. キーの存在チェック existsメソッド

If HashTable.exists(key) Then
    '存在する
Else
    '存在しない
End If

Existsメソッドの引数にキーをセットして呼び出すと、存在チェックができます。

HashTable.exists(“Apple”)

このようにすると、”Apple”はキーとして登録済みですので、Trueが返ります。

5. 公式ドキュメント

https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/dictionary-object