Main Content

eraseBetween

Delete substrings between start and end points

Description

newStr = eraseBetween(str,startPat,endPat) deletes all characters from str that occur between the substrings startPat and endPat, but does not delete startPat and endPat themselves. eraseBetween returns the remaining text as newStr.

If str is a string array or a cell array of character vectors, then eraseBetween deletes characters from each element of str. The output argument newStr has the same data type as str.

example

newStr = eraseBetween(str,startPos,endPos) deletes all characters from str that occur between the positions startPos and endPos, including the characters at those positions.

example

newStr = eraseBetween(___,'Boundaries',bounds) forces the starts and ends specified in any of the previous syntaxes to be either inclusive or exclusive. They are inclusive when bounds is 'inclusive', and exclusive when bounds is 'exclusive'. For example, eraseBetween(str,startPat,endPat,'Boundaries','inclusive') deletes startPat, endPat, and all the text between them.

example

Examples

collapse all

Create string arrays. Then delete text that occurs between substrings.

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

Delete the text that occurs between the substrings "quick" and " fox". The eraseBetween function deletes the text but does not delete "quick" or " fox".

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

Delete substrings from each element of a string array. When you specify different substrings as start and end indicators, they must be contained in a string array or a cell array of character vectors that is the same size as 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"

Create a string array that has text enclosed by tags.

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>"

Delete the text enclosed by tags. First create patterns that match any start tag and end tag by using the wildcardPattern function.

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

    "<" + wildcardPattern + ">"

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

    "</" + wildcardPattern + ">"

Then call the eraseBetween function.

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

For a list of function that create pattern objects, see pattern.

Create string arrays and delete substrings between start and end positions that are specified as numbers.

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

Delete a substring. To delete the middle name and one of the space characters, specify the sixth and 11th positions in the string. The deleted substring includes the sixth and 11th characters.

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

Delete substrings from each element of a string array. When you specify different start and end positions with numeric arrays, they must be the same size as the input string array.

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"

Delete text from string arrays with boundaries that are forced to be inclusive or exclusive. eraseBetween deletes the boundaries when they are inclusive. eraseBetween returns the boundaries as part of the output string array when they are exclusive.

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

Delete the text between sixth and 13th positions, but do not delete the characters at those positions.

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

Delete the text between two substrings, and also the substrings themselves.

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"

Create a character vector and delete text between start and end positions.

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

Delete text between substrings.

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

Input Arguments

collapse all

Input text, specified as a string array, character vector, or cell array of character vectors.

Text or pattern that marks the start position of the text to delete, specified as one of the following:

  • String array

  • Character vector

  • Cell array of character vectors

  • pattern array

If str is a string array or cell array of character vectors, then you can delete substrings from every element of str. You can specify that the substrings either all have the same start or have different starts in each element of str.

  • To specify the same start, specify startPat as a character vector, string scalar, or pattern object.

  • To specify different starts, specify startPat as a string array, cell array of character vectors, or pattern array.

Example: eraseBetween(str,"AB","YZ") deletes all characters between AB and YZ in each element of str.

Example: If str is a 2-by-1 string array, then eraseBetween(str,["AB";"FG"],["YZ";"ST"]) deletes all characters between AB and YZ in str(1), and between FG and ST in str(2).

Text or pattern that marks the end position of the text to delete, specified as one of the following:

  • String array

  • Character vector

  • Cell array of character vectors

  • pattern array

If str is a string array or cell array of character vectors, then you can delete substrings from every element of str. You can specify that the substrings either all have the same end or have different ends in each element of str.

  • To specify the same end, specify endPat as a character vector, string scalar, or pattern object.

  • To specify different ends, specify endPat as a string array, cell array of character vectors, or pattern array.

Example: eraseBetween(str,"AB","YZ") deletes all characters between AB and YZ in each element of str.

Example: If str is a 2-by-1 string array, then eraseBetween(str,["AB";"FG"],["YZ";"ST"]) deletes all characters between AB and YZ in str(1), and between FG and ST in str(2).

Start position, specified as a numeric array.

If str is a string array or cell array of character vectors, then startPos can be a numeric scalar or numeric array of the same size as str.

Example: eraseBetween(str,5,9) deletes all characters from the fifth through the ninth positions in each element of str.

Example: If str is a 2-by-1 string array, then eraseBetween(str,[5;10],[9;21]) deletes all characters from the fifth through the ninth positions in str(1), and from the 10th through the 21st positions in str(2).

End position, specified as a numeric array.

If str is a string array or cell array of character vectors, then endPos can be a numeric scalar or numeric array of the same size as str.

Example: eraseBetween(str,5,9) deletes all characters from the fifth through the ninth positions in each element of str.

Example: If str is a 2-by-1 string array, then eraseBetween(str,[5;10],[9;21]) deletes all characters from the fifth through the ninth positions in str(1), and from the 10th through the 21st positions in str(2).

Boundary behavior, specified as 'inclusive' or 'exclusive'. When boundary behavior is inclusive the start and end specified by previous arguments are included in the deleted text. If boundary behavior is exclusive, then the start and end are not included.

Output Arguments

collapse all

Output text, returned as a string array, character vector, or cell array of character vectors. str and newStr have the same data type.

Extended Capabilities

Version History

Introduced in R2016b