Main Content

eraseBetween

删除起点和终点之间的子字符串

说明

示例

newStr = eraseBetween(str,startPat,endPat) 删除 str 中出现在子字符串 startPatendPat 之间的所有字符,但不删除 startPatendPat 本身。eraseBetween 会将剩余文本作为 newStr 返回。

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

示例

newStr = eraseBetween(str,startPos,endPos) 删除 str 中出现在位置 startPosendPos 之间的所有字符,包括这两个位置上的字符。

示例

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

示例

全部折叠

创建字符串数组。然后删除出现在子字符串之间的文本。

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

删除出现在子字符串 "quick"" fox" 之间的文本。eraseBetween 函数会删除文本,但不会删除 "quick"" fox"

newStr = eraseBetween(str,"quick"," fox")
newStr = 
"The quick fox"

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

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

startPos = ["quick";"the"];
endPos = [" fox";" dog"];
newStr = eraseBetween(str,startPos,endPos)
newStr = 2x1 string
    "The quick fox jumps"
    "over the dog"

创建一个字符串数组,其中包含用标记括起来的文本。

str = ["<courseName>Calculus I</courseName>";
       "<semester>Fall 2020</semester>";
       "<schedule>MWF 8:00-8:50</schedule>"]
str = 3x1 string
    "<courseName>Calculus I</courseName>"
    "<semester>Fall 2020</semester>"
    "<schedule>MWF 8:00-8:50</schedule>"

删除由标记括起来的文本。首先使用 wildcardPattern 函数创建匹配任何开始标记和结束标记的模式。

startPat = "<" + wildcardPattern + ">"
startPat = pattern
  Matching:

    "<" + wildcardPattern + ">"

endPat = "</" + wildcardPattern + ">"
endPat = pattern
  Matching:

    "</" + wildcardPattern + ">"

然后,调用 eraseBetween 函数。

newStr = eraseBetween(str,startPat,endPat)
newStr = 3x1 string
    "<courseName></courseName>"
    "<semester></semester>"
    "<schedule></schedule>"

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

创建字符串数组,并删除以数字指定的开始和结束位置之间的子字符串。

str = "Edgar Allen Poe"
str = 
"Edgar Allen Poe"

删除子字符串。要删除中间名和其中一个空白字符,请指定字符串中的第 6 个和第 11 个位置。删除的子字符串包括第 6 个和第 11 个字符。

newStr = eraseBetween(str,6,11)
newStr = 
"Edgar Poe"

从字符串数组的每个元素中删除子字符串。当您使用数值数组指定不同的开始和结束位置时,它们必须与输入字符串数组具有相同大小。

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

startsPos = [6;7];
endPos = [11;10];
newStr = eraseBetween(str,startsPos,endPos)
newStr = 2x1 string
    "Edgar Poe"
    "Louisa Alcott"

在强制包含或不包含边界的情况下从字符串数组中删除文本。当它们为包含时,eraseBetween 将删除边界元素。当它们为不包含时,eraseBetween 将边界作为输出字符串数组的一部分返回。

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

删除第 6 个和第 13 个位置之间的文本,但不删除这些位置上的字符。

newStr = eraseBetween(str,6,13,'Boundaries','exclusive')
newStr = 
"small||large"

删除两个子字符串之间的文本,同时删除子字符串本身。

str = "The quick brown fox jumps over the lazy dog"
str = 
"The quick brown fox jumps over the lazy dog"
newStr = eraseBetween(str," brown","lazy",'Boundaries','inclusive')
newStr = 
"The quick dog"

创建字符向量,并删除开始和结束位置之间的文本。

chr = 'mushrooms, peppers, and onions'
chr = 
'mushrooms, peppers, and onions'
newChr = eraseBetween(chr,10,19)
newChr = 
'mushrooms and onions'

删除子字符串之间的文本。

newChr = eraseBetween(chr,'mushrooms',' and')
newChr = 
'mushrooms and onions'

输入参数

全部折叠

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

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

  • 字符串数组

  • 字符向量

  • 字符向量元胞数组

  • pattern 数组

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

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

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

示例: eraseBetween(str,"AB","YZ") 将删除 str 的每个元素中介于 ABYZ 之间的所有字符。

示例: 如果 str 是一个 2×1 字符串数组,eraseBetween(str,["AB";"FG"],["YZ";"ST"]) 将删除 YZ 中介于 ABstr(1) 之间以及 str(2) 中介于 FGST 之间的所有字符。

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

  • 字符串数组

  • 字符向量

  • 字符向量元胞数组

  • pattern 数组

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

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

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

示例: eraseBetween(str,"AB","YZ") 将删除 str 的每个元素中介于 ABYZ 之间的所有字符。

示例: 如果 str 是一个 2×1 字符串数组,eraseBetween(str,["AB";"FG"],["YZ";"ST"]) 将删除 YZ 中介于 ABstr(1) 之间以及 str(2) 中介于 FGST 之间的所有字符。

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

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

示例: eraseBetween(str,5,9) 删除 str 的每个元素中从第五个位置到第九个位置的所有字符。

示例: 如果 str 是一个 2×1 字符串数组,则 eraseBetween(str,[5;10],[9;21]) 删除 str(1) 中从第五个位置到第九个位置以及 str(2) 中从第 10 个位置到第 21 个位置的所有字符。

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

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

示例: eraseBetween(str,5,9) 删除 str 的每个元素中从第五个位置到第九个位置的所有字符。

示例: 如果 str 是一个 2×1 字符串数组,则 eraseBetween(str,[5;10],[9;21]) 删除 str(1) 中从第五个位置到第九个位置以及 str(2) 中从第 10 个位置到第 21 个位置的所有字符。

边界行为,指定为 'inclusive''exclusive'。当边界行为是 inclusive(包含)时,由前面的参量指定的起点和终点将包含在删除的文本中。如果边界行为是 exclusive(不包含),则不包含起点和终点。

输出参量

全部折叠

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

扩展功能

版本历史记录

在 R2016b 中推出