2

hi_there のようないくつかのアンダースコアを含む文字列があるとします。

その文字列を「こんにちは」に自動変換する方法はありますか?

(ちなみに、元の文字列は変数名で、プロット タイトルに変換しています)。

4

6 に答える 6

5

文字列変数 's' に対してこの Matlab コードを試してください

s(s=='_') = ' ';
于 2013-09-01T03:32:05.730 に答える
2

もっと複雑なことをしなければならない場合、たとえば複数の可変長文字列の置換を行うなど、

s(s == '_') = ' '大きな痛みになります。交換のニーズがさらに複雑になった場合は、次の使用を検討してregexprepください。

>> regexprep({'hi_there', 'hey_there'}, '_', ' ')
ans = 
    'hi there'    'hey there'

そうは言っても、あなたの場合、@AndreasH.のソリューションが最も適切であり、regexprepやり過ぎです。

もっと興味深い質問は、なぜ変数を文字列として渡しているのかということです。

于 2013-09-01T04:27:27.047 に答える
2

regexprep() は、探しているものである可能性があり、一般的に便利な関数です。

regexprep('hi_there','_',' ')

最初の引数文字列を取り、2 番目の引数のインスタンスを 3 番目の引数に置き換えます。この場合、すべてのアンダースコアがスペースに置き換えられます。

于 2013-09-01T04:30:03.753 に答える
1

Matlab では文字列はベクトルであるため、_ を空白に置き換えるなど、標準の演算子を使用して単純な文字列操作を実行できます。

text = 'variable_name';
text(text=='_') = ' '; //replace all occurrences of underscore with whitespace
=> text = variable name
于 2013-09-01T03:36:55.870 に答える