文字列の一部を別のオブジェクトに変換し、それらをリストまたは配列に結合しようとしていますが、それは問題ではありません。次に例を示します。
サンプル文字列 "これはテスト文字列です。\n \t これはタブ付きの改行です".
そして、私は次のような出力を取得したいと思います:
new List<OpenXmlElement>(){
new Text("This is a test string."),
new Break(),//this is for the \n char
new TabChar(), //this is for the \t char
new Text("This is a new line with a tab")
};
辞書にはすでにいくつかの文字とクラス型があり、リフレクションを使用してそれらをインスタンス化する予定です。
public static Dictionary<string, Type> Tags = new Dictionary<string, Type>()
{
{"\n", typeof(Break)},
{"\t", typeof(TabChar)}
};
部分文字列または正規表現を使用してできると思いますが、よりクリーンなソリューションを見つけたいと思っていました。
質問が十分に明確でない場合は申し訳ありません。ご不明な点がございましたら、お気軽にお問い合わせください。
これは私の完全なクラスです
public class FormatConverter:IFormatConverter
{
public static Dictionary<string, Type> Tags = new Dictionary<string, Type>()
{
{"\n", typeof(Break)},
{"\t", typeof(TabChar)}
};
public IEnumerable<OpenXmlElement> Convert(string format)
{
foreach (KeyValuePair<string,Type> pair in Tags)
{
var items = format.Split(
new []{pair.Key},StringSplitOptions.RemoveEmptyEntries
);
foreach (var item in items)
{
yield return new Text(item);
yield return Activator.CreateInstance(pair.Value) as OpenXmlElement;
}
format = format.Replace(pair.Key,"");
}
}
}
何が問題なのかはわかっていますが、それを修正する方法がわかりません。