将下划线转换为Matlab字符串中的空格?

时间:2013-09-01 03:13:39

标签: string matlab replace

所以说我有一个带有一些下划线的字符串,比如hi_there。

有没有办法将该字符串自动转换为“hi there”?

(顺便说一句,原始字符串是一个变量名,我正在转换成情节标题)。

6 个答案:

答案 0 :(得分:6)

令人惊讶的是,还没有人提到strrep

>> strrep('string_with_underscores', '_', ' ')
ans =
string with underscores

应该是official way来进行简单的字符串替换。对于这样一个简单的案例,regexprep是矫枉过正的:是的,他们是瑞士刀,可以尽一切可能,但他们有一个很长的手册。 AndreasH显示的字符串索引仅适用于替换单个字符,它不能这样做:

>> s = 'string*-*with*-*funny*-*separators';
>> strrep(s, '*-*', ' ')
ans =
string with funny separators

>> s(s=='*-*') = ' '
Error using  == 
Matrix dimensions must agree.

作为奖励,它也适用于带字符串的单元格数组:

>> strrep({'This_is_a','cell_array_with','strings_with','underscores'},'_',' ')
ans = 
    'This is a'    'cell array with'    'strings with'    'underscores'

答案 1 :(得分:5)

尝试使用此Matlab代码作为字符串变量's'

s(s=='_') = ' ';

答案 2 :(得分:2)

如果你不得不做更复杂的事情,比如做一个替换多个可变长度的字符串,

s(s == '_') = ' '将是一个巨大的痛苦。如果您的替换需求变得更复杂,请考虑使用regexprep

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

话虽如此,在你的情况下,@ AndreasH。的解决方案是最合适的,regexprep是过度的。

一个更有趣的问题是为什么要将变量作为字符串传递?

答案 3 :(得分:2)

regexprep()可能正是您所寻找的,并且通常是一个方便的功能。

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

将获取第一个参数字符串,并将第二个参数的实例替换为第三个参数。在这种情况下,它用空格替换所有下划线。

答案 4 :(得分:1)

在Matlab中,字符串是向量,因此可以使用标准运算符来实现简单的字符串操作,例如用空格替换_。

text = 'variable_name';
text(text=='_') = ' '; //replace all occurrences of underscore with whitespace
=> text = variable name

答案 5 :(得分:0)

我知道已经回答了这个问题,但是,就我而言,我正在寻找一种纠正剧情标题的方法,以便可以包含文件名(可能带有下划线)。因此,我想将其下划线显示为下划线而不显示。因此,使用上面的重要信息(而不是空格),我避开了下标替换。

Bot: "The phrase for today is 'Don't Give Up!'"