2017-08-12 2 views
-1

私はこのような文字列があります。Matlabで複雑な区切り記号で文字列を分割するためにregexpを使用するにはどうすればよいですか?

"%","W/m²","mm","Deg C","%","W/m²","MJ/m²","","uSec","","uSec","","uSec" 

を私は複雑な区切り文字に基づいて、これを分割したい:各項目は、ハイフン(左右)に囲まれたとカンマで区切られています。

備考:

  • 2の割合や電源などの文字が含まれており、中に読まれるべきであるここに私の例で私は、列挙された13の項目(3空白)を持っています。
  • Empyフィールド(項目)も含まれ(廃棄されていない)とstrin「無単位の」
  • 項目も空白を含めることができます(「DEG C」)に置き換える必要があり
誰も私を助けてもらえ

お願いします?

+0

は、スタックオーバーフローへようこそ、ここの周りにあなたの方法を知っている(ともあなたの最初のバッジを獲得するために)[歓迎ツアー](https://stackoverflow.com/tour)を通過するための時間をとってください[最小限の、完全で検証可能なサンプルを作成する](https://stackoverflow.com/help/mcve)の方法と[よくある質問を表示する方法]を確認する(https://stackoverflow.com/help/how-あなたのチャンスを増やしてフィードバックや有用な回答を得ることができます。 –

+1

各項目は二重引用符で囲まれていませんか?ハイフンではない?あなたはregexpを使用する必要がありますか? 1つを使用せずに簡単なアプローチがあります。 – shockawave123

答えて

1

これを達成する他の方法がありますが、regexpがそれを行う必要があります。私はスピードと互換性の理由からstrsplitよりもregexp( 'split')を優先します。後者は比較的新しいものです。

str = '"%","W/m²","mm","Deg C","%","W/m²","MJ/m²","","uSec","","uSec","","uSec"'; 
units = regexp(str, ',', 'split'); % split by comma 
units = regexp(units, '(?<=").*(?=")', 'match', 'once'); % get content between quotes 
units(cellfun(@isempty, units)) = {'unitless'}; % set empty to unitless 
関連する問題