Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

replaceBetween

替换起点和终点之间的子字符串

说明

示例

newStr = replaceBetween(str,startPat,endPat,newText)str 中的子字符串替换为 newText 中的文本。被替换的子字符串出现在子字符串 startPatendPat 之间。但是,replaceBetween 不会替换 startPatendPat 本身。replaceBetween 返回的结果为 newStrnewText 参数包含的字符数可以不同于它所替换的子字符串。

如果 str 是字符串数组或字符向量元胞数组,replaceBetween 将替换 str 的每个元素中的子字符串。输出参数 newStr 的数据类型与 str 相同。

示例

newStr = replaceBetween(str,startPos,endPos,newText) 替换 str 中的子字符串。被替换的子字符串出现在 strstartPosendPos 之间的位置,包括这两个位置上的字符。

示例

newStr = replaceBetween(___,'Boundaries',bounds) 强制包含或不包含在上述任一语法中指定的开始和结束位置。当 bounds'inclusive' 时,包含开始和结束位置;当 bounds'exclusive' 时,不包含开始和结束位置。例如,replaceBetween(str,startPat,endPat,newText,'Boundaries','inclusive')startPatendPat 以及它们之间的所有文本替换为由 newText 指定的文本。

示例

全部折叠

创建字符串数组,并替换出现在子字符串之间的文本。

从 R2017a 开始,您可以使用双引号创建字符串。

str = "The quick brown fox"
str = 
"The quick brown fox"

如果您使用的是 R2016b,请使用 string 函数而不是双引号来创建字符串数组。

替换出现在子字符串 quickfox 之间的文本。replaceBetween 函数会替换文本,但不会替换输出中的 quickfox

newStr = replaceBetween(str,"quick "," fox","red")
newStr = 
"The quick red fox"

替换字符串数组的每个元素中的子字符串。当您将不同子字符串指定为开头和结尾指示符时,它们必须包含在与 str 具有相同大小的字符串数组或元胞数组中。替换文本还必须在具有相同大小的字符串数组或元胞数组中。

str = ["The quick brown fox jumps";"over the lazy dog"]
str = 2x1 string
    "The quick brown fox jumps"
    "over the lazy dog"

newText = ["red";"sleeping"];
newStr = replaceBetween(str,["quick ";"the "],[" fox";" dog"],newText)
newStr = 2x1 string
    "The quick red fox jumps"
    "over the sleeping dog"

自 R2020b 开始提供

创建缩写,如 "internationalization" 缩写为 "i18n"。为此,将单词的第一个字母和最后一个字母之间的文本替换为字母数目。

首先,创建一个字符串数组。

str = ["globalization";
       "internationalization";
       "localization"]
str = 3x1 string
    "globalization"
    "internationalization"
    "localization"

创建分别与字符串的第一个和最后一个字符匹配的模式。函数 textBoundary 匹配字符串开头或结尾的边界,而调用 lettersPattern(1) 匹配任何字母。

startPat = textBoundary + lettersPattern(1)
startPat = pattern
  Matching:

    textBoundary + lettersPattern(1)

endPat = lettersPattern(1) + textBoundary
endPat = pattern
  Matching:

    lettersPattern(1) + textBoundary

计算 str 中每个字符串的长度。考虑到第一个和最后一个字母,从每个长度中减去 2。将长度转换为字符串。

L = strlength(str) - 2;
L = string(L)
L = 3x1 string
    "11"
    "18"
    "10"

str 的元素创建缩写。用 L 的元素替换第一个和最后一个字母之间的字符。

newStr = replaceBetween(str,startPat,endPat,L)
newStr = 3x1 string
    "g11n"
    "i18n"
    "l10n"

有关创建模式对象的函数列表,请参阅pattern

创建字符串数组,并替换由数字指定的开始和结束位置之间的子字符串。

从 R2017a 开始,您可以使用双引号创建字符串。创建包含人名的字符串。要替换中间名,请指定字符串中的第七个和第十一个位置。

str = "Edgar Allen Poe"
str = 
"Edgar Allen Poe"
newStr = replaceBetween(str,7,11,'A.')
newStr = 
"Edgar A. Poe"

替换字符串数组的每个元素中的子字符串。当您使用数值数组指定不同的开始和结束位置时,它们必须与输入字符串数组具有相同大小。替换文本还必须在具有相同大小的字符串数组或元胞数组中。

str = ["Edgar Allen Poe";"Louisa May Alcott"]
str = 2x1 string
    "Edgar Allen Poe"
    "Louisa May Alcott"

newText = ["A.";"M."];
newStr = replaceBetween(str,[7;8],[11;10],newText)
newStr = 2x1 string
    "Edgar A. Poe"
    "Louisa M. Alcott"

替换字符串数组中强制包含或排除的边界内的文本。如果包含边界,replaceBetween 将替换边界和其中的文本。如果排除边界,replaceBetween 将不会替换边界。

从 R2017a 开始,您可以使用双引号创建字符串。

str = "small|medium|large"
str = 
"small|medium|large"

替换第六个和第十三个位置之间的文本,但不替换这两个位置上的字符。

newText = "regular";
newStr = replaceBetween(str,6,13,newText,'Boundaries','exclusive')
newStr = 
"small|regular|large"

替换两个子字符串之间的文本,还替换子字符串本身。

str = "The quick brown fox jumps over the lazy dog"
str = 
"The quick brown fox jumps over the lazy dog"
newText = "red bird flies";
newStr = replaceBetween(str,'brown','jumps',newText,'Boundaries','inclusive')
newStr = 
"The quick red bird flies over the lazy dog"

创建一个字符向量,并替换开始和结束位置之间的文本。

chr = 'mushrooms, peppers, and onions'
chr = 
'mushrooms, peppers, and onions'
newChr = replaceBetween(chr,12,18,'pineapple')
newChr = 
'mushrooms, pineapple, and onions'

替换子字符串之间的文本。

newChr = replaceBetween(chr,'mushrooms,',' and',' extra cheese,')
newChr = 
'mushrooms, extra cheese, and onions'

输入参数

全部折叠

输入文本,指定为字符串数组、字符向量或字符向量元胞数组。

标记要替换的文本的开始位置的文本或模式,指定为下列项之一:

  • 字符串数组

  • 字符向量

  • 字符向量元胞数组

  • pattern 数组(自 R2020b 开始提供)

如果 str 是字符串数组或字符向量元胞数组,则可以替换 str 的每个元素中的子字符串。您可以指定子字符串在 str 的每个元素中都有相同的开头,或不同的开头。

  • 要指定相同的开头,请将 startPat 指定为字符向量、字符串标量或 pattern 对象。

  • 要指定不同开头,请将 startPat 指定为字符串数组、字符向量元胞数组或 pattern 数组。

示例: replaceBetween(str,"AB","YZ",newText)str 的每个元素中位于 ABYZ 之间的子字符串替换为由 newText 指定的文本。

示例: 如果 str 是一个 2×1 字符串数组,replaceBetween(str,["AB";"FG"],["YZ";"ST"],newText) 将替换 str(1) 中位于 ABYZ 之间的子字符串,以及 str(2) 中位于 FGST 之间的子字符串。

标记要替换的文本的结束位置的文本或模式,指定为下列项之一:

  • 字符串数组

  • 字符向量

  • 字符向量元胞数组

  • pattern 数组(自 R2020b 开始提供)

如果 str 是字符串数组或字符向量元胞数组,则可以替换 str 的每个元素中的子字符串。您可以指定子字符串在 str 的每个元素中都有相同的结尾,或有不同的结尾。

  • 要指定相同的结尾,请将 endPat 指定为字符向量、字符串标量或 pattern 对象。

  • 要指定不同的结尾,请将 endPat 指定为字符串数组、字符向量元胞数组或 pattern 数组。

示例: replaceBetween(str,"AB","YZ",newText)str 的每个元素中位于 ABYZ 之间的子字符串替换为由 newText 指定的文本。

示例: 如果 str 是一个 2×1 字符串数组,replaceBetween(str,["AB";"FG"],["YZ";"ST"],newText) 将替换 str(1) 中位于 ABYZ 之间的子字符串,以及 str(2) 中位于 FGST 之间的子字符串。

开始位置,指定为数值数组。

如果 str 是一个字符串数组或字符向量元胞数组,则 startPos 可以是与 str 具有相同大小的数值标量或数值数组。

示例: replaceBetween(str,5,9,newText)str 的每个元素中从第五个到第九个位置之间的子字符串替换为由 newText 指定的文本。

示例: 如果 str 是一个 2×1 字符串数组,replaceBetween(str,[5;10],[9;21],newText) 将替换 str(1) 中从第五个到第九个位置之间的子字符串,以及 str(2) 中从第十个到第二十一个位置之间的子字符串。

结束位置,指定为数值数组。

如果 str 是一个字符串数组或字符向量元胞数组,则 endPos 可以是与 str 具有相同大小的数值标量或数值数组。

示例: replaceBetween(str,5,9,newText)str 的每个元素中从第五个到第九个位置之间的子字符串替换为由 newText 指定的文本。

示例: 如果 str 是一个 2×1 字符串数组,replaceBetween(str,[5;10],[9;21],newText) 将替换 str(1) 中从第五个到第九个位置之间的子字符串,以及 str(2) 中从第十个到第二十一个位置之间的子字符串。

替换文本,指定为字符串数组、字符向量或字符向量元胞数组。

如果 str 是一个字符串数组或字符向量元胞数组,则 newText 可以是与 str 具有相同大小的字符向量、字符串标量、字符串数组或元胞数组。

示例: replaceBetween(str,"AB","YZ","efg")str 的每个元素中位于 ABYZ 之间的子字符串替换为 efg

示例: 如果 str 是一个 2×1 字符串数组,replaceBetween(str,["AB";"FG"],["YZ";"ST"],["efg";"lmnop"]) 会将 str(1) 中位于 ABYZ 之间的子字符串替换为 efg,并将 str(2) 中位于 FGST 之间的子字符串替换为 lmnop

输出参数

全部折叠

输出文本,以字符串数组、字符向量或字符向量元胞数组形式返回。strnewStr 具有相同的数据类型。

扩展功能

在 R2016b 中推出