列にある文字列内の空白を高速で変換したい。

dtA

列名 = 名前
“苗字 名前”
“苗字 名前”
“苗字 名前”
“苗字 名前”

上記のようなデータテーブル(実際は1000行ほど)が存在し、
苗字と名前の間のスペースを半角で統一したいのですが、
一行ずつ繰り返しで変換していくのでは時間がかかってしまい、
select等を使用し、出来れば一つのアクティビティ等少ない処理時間で処理が終えれないかと思っています。

よろしくお願いいたします。

こんにちは

1000行程度ならForEachRowでも対応できるレベルではないかと思いますが....以下2例ほど

Assignアクティビティ内でLoadDataRowメソッドを用いる方法

dtA = dtA.AsEnumerable().Select(Function(r) dtA.Clone.LoadDataRow({System.Text.RegularExpressions.Regex.Replace(r("名前").ToString().Trim(),"\s+"," ")},False)).CopyToDataTable()

ただしLoadDataRowメソッドの引数として出力する列の羅列が必要です。(上記は名前列しか持たないDataTableでの例です)

InvokeCodeアクティビティを用いる方法

dtA.AsEnumerable.ToList.ForEach(Sub(r)
    r("名前") =System.Text.RegularExpressions.Regex.Replace(r("名前").ToString().Trim(),"\s+"," ")
End Sub
)

Sample20220725-2.zip (2.9 KB)

@basstenere0123
はじめまして。

そのデータテーブルをどのように使うのかによりますが、
1つずつ名前を取り出して使用するなら、使用する際にリプレイスしてはいかがでしょうか?

>↓画像内の[str名前]はString型の変数です。

image

そのデータテーブルごとExcelに張り付けたいということなら
張り付ける前にForEachRowで処理するのがよろしいかと思います。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.