使用matlab中的索引替换字符串中的一个char

时间:2015-08-31 07:54:46

标签: regex xml string matlab char

我已经从Matlab生成了一个.xml文件,我无法在浏览器中打开它。原因是当创建.xml文件时,它有一些“小于”或“大于”运算符。例如,一个生成的.xml文件是:

<test Name='blabla' User='User1' Value='<2'>

现在,如何更改此符号'&lt;' “小于”但仅在2号位置之前的位置?我尝试使用正则表达式来查找索引:

splitStr = regexp(xmlString,'<\d')

有了这个,我只得到索引,但我不知道如何替换它。使用regexprep替换每个'&lt;'在字符串中,包括字符串开头的那个,然后xml将无法在浏览器中打开。

或者,如果有其他方式?

3 个答案:

答案 0 :(得分:2)

更新:将多个1个字符替换为:

假设您有x = 'a<bc'并希望将第二个字符替换为'小于'

你可以这样做:

[x(1:1) ' less than ' x(3:end)]

它会给出

a less than bc

从这里开始,创建一般解决方案应该很简单。

如果您有索引并且想要替换字符很简单,那么我们假设索引是2:

x = 'abcd'
x(2) = 'z'

将产生

'azcd'

答案 1 :(得分:0)

不了解Regex的MatLab语法,但有类似

的内容
(?<=['"])([^'"]*?)<([^'"]*?)(?=['"])

https://regex101.com/r/oK9wX2/2

您可以抓住每个<内部引号并将其替换为&lt; - 同样适用于>&gt;

答案 2 :(得分:0)

修复

使用字符串替换可以轻松实现您所要求的确切内容:

s = "<test Name='blabla' User='User1' Value='<2'>"
strrep(s,'<2','less than 2')

对于更复杂的模式,您当然可以使用regexrep

解决方案

但是,你提到:

  

我已经从Matlab生成了一个.xml文件

实际上,<不应该是xml,所以我想你已经生成了一个类似于xml的文件。从这里可以很容易地看出,真正的解决方案是在文件创建过程中处理特殊字符!