- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:c#でC言語のstrtokに相当する関数は何か)
c#でC言語のstrtokに相当する関数は何か
このQ&Aのポイント
- c#でC言語のstrtokに相当する関数は何か
- 文字列から指定した文字でデータを区切る関数strtokがC言語にはある。これに相当するC#の関数は何か
- 例えばCでは以下のように書く。char data1[]= " 123 , 456 Yamada " ; char *token ; strtok( data, " ," ) ; スペースとカンマを区切りに文字列を抽出 token = strtok( str, " ." ); printf(" token chat = %s\n", token ) ; while ( token != NULL ) { token = strtok( NULL," ." ); if ( token != NULL ) printf(" token chat = %s\n", token ) ; } これに相当するc#のSplit関数を使用すると不要な空白を取り出しているようである知っている方がおりましたら、教えて下さい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
strtokの第二引数に同じ値を与え続けるのであれば,StringのSplitメソッドがほぼ同じでしょう。 MSDN: String.Split メソッド (Char[]) (System) http://msdn.microsoft.com/ja-jp/library/b873y76a.aspx 細かく動作をあわせるなら, s.Split(' ', ',').Where(v => v != "").ToArray() のように,空の要素を排除しないといけませんが。 例示のように初回と二回目で異なる値を与えるのであれば,正規表現に頼る事になると思います。 MSDN: Regex クラス (System.Text.RegularExpressions) http://msdn.microsoft.com/ja-jp/library/system.text.regularexpressions.regex.aspx ただ,例示の場合であればStrnig.IndexOfAnyとString.Substringを使って分割した方が正規表現を考えるより楽だと思います。 MSDN: String.IndexOfAny メソッド (Char[]) (System) http://msdn.microsoft.com/ja-jp/library/11w09h50.aspx MSDN: String.Substring メソッド (System) http://msdn.microsoft.com/ja-jp/library/system.string.substring.aspx
お礼
回答をいただき、ありがおうございます。 C言語でscanfに対応する関数はJAVAとC#では何かということを考えてました。 処理内容は 1.1行分読み込んで 2.区切り文字で分解して 3.変数に変換する ということになった。 JAVAではStringTokenizerを使えばよいとわかりました。 C#でSplitを使用すると、空行が入ることで、質問したわけです。 空行を除いて文字列を抽出できればと考えたわけです。 Splitの第2パラメタに「StringSplitOptions.RemoveEmptyEntries」を指定すればいいと分かりました。 これで問題解決です。 回答をいただき、ありがおうございました。