SAP GUI画面からクリップボードにデータをコピーしています。メモ帳やテキストエディタに貼り付けると、以下のようになります。C#のテキストテーブル文字列からデータをより確実かつ迅速に取得する方法
私はクリップボードのテキストテーブルの列から[によって作成され、PO日、文書]のみ3つのフィールドをしたいです。
現在、以下のようにデータを読み取っています。
public class DocData
{
public string CreatedBy { get; set; }
public string PODate { get; set; }
public string Document { get; set; }
}
private void GetDocumentData()
{
var clipboardData = Clipboard.GetText(TextDataFormat.Text);
List<DocData> docDataList = new List<DocData>();
for (int separatorCounter = 20; separatorCounter < clipboardData.Count(); separatorCounter = separatorCounter + 13)
{
DocData docData = new DocData();
int index = GetNthIndex(clipboardData, '|', separatorCounter);
if (index != -1)
{
var dataString = clipboardData.Substring(index + 1);
var sepIndex = dataString.IndexOf('|');
if (sepIndex != -1)
{
docData.CreatedBy = dataString.Substring(0, sepIndex).Trim();
}
}
index = GetNthIndex(clipboardData, '|', separatorCounter + 2);
if (index != -1)
{
var dataString = clipboardData.Substring(index + 1);
var sepIndex = dataString.IndexOf('|');
if (sepIndex != -1)
{
docData.PODate = dataString.Substring(0, sepIndex).Trim();
}
}
index = GetNthIndex(clipboardData, '|', separatorCounter + 4);
if (index != -1)
{
var dataString = clipboardData.Substring(index + 1);
var sepIndex = dataString.IndexOf('|');
if (sepIndex != -1)
{
docData.Document = dataString.Substring(0, sepIndex).Trim();
}
}
if (!string.IsNullOrEmpty(docData.Document))
{
docDataList.Add(docData);
}
}
}
文字列をあまり操作しないと、これを行うより良い方法を提案できます。
どうSplit' –
'についてそして、何のコピー/ペーストの代わりにサブルーチンを使用してはどうですか? – Sefe
固定フォーマットデータのように見えますが、文字列 – BugFinder