【问题标题】:Replace one char in a string using its index in matlab使用matlab中的索引替换字符串中的一个字符
【发布时间】:2015-08-31 07:54:46
【问题描述】:

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

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

现在,我怎样才能将此符号“

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

有了这个我只能得到索引,但我不知道如何替换它。使用正则表达式,替换字符串中的每个'

或者还有其他方法吗?

【问题讨论】:

    标签: regex xml string matlab char


    【解决方案1】:

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

    假设你有x = 'a&lt;bc' 并且想用'小于'替换第二个字符

    你可以这样做:

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

    它会给你

    a less than bc
    

    从这里创建一个通用解决方案应该很简单。


    如果你有索引并且想要替换一个字符很简单,让我们假设索引是2:

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

    将产生

    'azcd'
    

    【讨论】:

    • 如果您要替换它的字符是同一行,则可以使用,就像在您的情况下,您只需将“b”替换为“z”。如果我尝试 x(31) = ' less than ',它会给出错误:在赋值 A(:) = B 中,A 和 B 中的元素数必须相同。
    【解决方案2】:

    不知道正则表达式的 MatLab 语法,但有类似的东西

    (?<=['"])([^'"]*?)<([^'"]*?)(?=['"])
    

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

    您可以在引号内捕获每个 &amp;lt; 并将其替换为 &amp;lt; - &amp;gt;&amp;gt; 也是如此。

    【讨论】:

      【解决方案3】:

      修复

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

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

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

      解决办法

      但是,你提到:

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

      其实&lt;不应该在xml中,所以我会说你生成了一个类似于xml的文件。从这里很容易看出,真正的解决方案是在文件创建期间处理特殊字符!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-15
        • 2011-10-20
        相关资源
        最近更新 更多