![]() |
Matlab-如何替换向量中的所有特殊字符?
是否可以通过正则表达式替换matlab向量中的所有特殊字符?
谢谢 * [I]编辑:*[/I] 谢谢你的回复。我正在努力实现以下目标。我有一个文本文件,其中包含小说中的几段内容。我已将此文件读入向量。 fileText = ['Token1,''token_2''token%!3']等。 在这种情况下 , _ % !是特殊字符,我想将它们替换为空格('')。可以通过正则表达式来实现吗?我可以使用javascript来做到这一点,但无法在Matlab中使用它。 谢谢 [B]回答:[/B] 如果“特殊字符”你的意思是较少用到[URL="http://en.wikipedia.org/wiki/Unicode"]的Unicode[/URL]字符,如楼 , 露 ,或录 ,那么您可以使用该功能[URL="http://www.mathworks.com/help/techdoc/ref/regexprep.html"]REGEXPREP[/URL]或集比较功能,如[URL="http://www.mathworks.com/help/techdoc/ref/ismember.html"]ISMEMBER[/URL] (你可以第一个字符串转换为其对应的整数代码如果需要,请使用功能[URL="http://www.mathworks.com/help/techdoc/ref/double.html"]DOUBLE[/URL] )。以下是几个示例,这些示例从字符串中删除了除标准英语字母字符(小写和大写)之外的所有字符: str = ['ABCDEFabcdef脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨']; %# A sample string str = regexprep(str,'[^a-zA-Z]',''); %# Remove characters using regexprep str(~ismember(str,['A':'Z' 'a':'z'])) = ''; %# Remove characters using ismember %# (as suggested by Andrew) str(~ismember(double(str),[65:90 97:122])) = ''; %# Remove characters based on %# their integer code 上面的所有选项都会产生相同的结果: str = ABCDEFabcdef [B]编辑:[/B] 为了响应更新后的问题中的特定示例,以下是如何使用[URL="http://www.mathworks.com/help/techdoc/ref/regexprep.html"]REGEXPREP[/URL]用[URL="http://www.mathworks.com/help/techdoc/ref/regexprep.html"]空格[/URL]替换[I]不是[/I] az , AZ或0-9所有字符的方法: str = regexprep(str,'[^a-zA-Z0-9]',''); 这可能比尝试编写一个正则表达式来匹配每个单独的“特殊”字符要容易得多,因为可能有很多正则表达式。但是,如果您[I]确定[/I]唯一的特殊字符将是_ , %和! ,则应达到与上述相同的效果: str = regexprep(str,'[_%!]',''); 另外,如[URL="https://stackoverflow.com/users/97160/amro"]Amro[/URL]的评论中所述,您还可以使用函数[URL="http://www.mathworks.com/help/techdoc/ref/isstrprop.html"]ISSTRPROP[/URL]将所有非字母数字字符替换为空白,如下所示: str(~isstrprop(str,'alphanum')) = ''; [url=https://stackoverflow.com/questions/3882609]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 09:05。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.