Main Content

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

extractBefore

提取指定位置前的子字符串

说明

示例

newStr = extractBefore(str,pat) 提取以 str 的第一个字符开头并在 pat 指定的子字符串之前结束的子字符串。如果 patstr 中多次出现,则 newStrstr 中从 str 的开始一直到 pat 第一次出现的位置的内容。

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

示例

newStr = extractBefore(str,pos) 提取以 str 的第一个字符开头并在 pos 指定的位置之前结束的子字符串。

示例

全部折叠

创建字符串数组,并选择子字符串之前出现的文本。

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

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

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

提取子字符串 " brown" 之前出现的子字符串。extractBefore 函数选择该文本,但不在输出中包括 " brown"

newStr = extractBefore(str," brown")
newStr = 
"The quick"

根据字符串数组中的元素创建新字符串数组。当您将不同子字符串指定为位置时,它们必须包含在与 str 具有相同大小的字符串数组或元胞数组中。

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

newStr = extractBefore(str,[" brown";" dog"])
newStr = 2x1 string
    "The quick"
    "over the lazy"

您还可以将子字符串指定为应用于输入字符串数组的所有元素的位置。

自 R2020b 开始提供

创建一个由文件名(包括完整路径)组成的字符串数组。

str = ["C:\Temp\MyReport.docx";
       "C:\Data\Experiment1\Trial1\Sample1.csv";
       "C:\Temp\Slides.pptx"]
str = 3x1 string
    "C:\Temp\MyReport.docx"
    "C:\Data\Experiment1\Trial1\Sample1.csv"
    "C:\Temp\Slides.pptx"

要提取路径,请先创建一个与路径末尾的文件名匹配的模式,然后提取该模式之前的路径。

一个完整的路径可以包含若干层级,每一层级可由后跟 "\" 字符的任意文本组成。因此,请先创建一个匹配除 "\" 字符之外的任何字符的模式。

name = wildcardPattern("Except","\")
name = pattern
  Matching:

    wildcardPattern("Except","\")

然后,创建一个模式,匹配在 "\" 字符与字符串末尾之间找到的任何名称。使用 textBoundary 函数匹配字符串的末尾。

pat = "\" + name + textBoundary
pat = pattern
  Matching:

    "\" + wildcardPattern("Except","\") + textBoundary

最后,调用 extractBefore

paths = extractBefore(str,pat)
paths = 3x1 string
    "C:\Temp"
    "C:\Data\Experiment1\Trial1"
    "C:\Temp"

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

使用指定位置前的子字符串创建字符串。

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

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

选择第 6 个字符前的子字符串。

newStr = extractBefore(str,6)
newStr = 
"Edgar"

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

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

newStr = extractBefore(str,[6;7])
newStr = 2x1 string
    "Edgar"
    "Louisa"

从每个元素中选择子字符串,指定相同的位置。

newStr = extractBefore(str,12)
newStr = 2x1 string
    "Edgar Allen"
    "Louisa May "

创建字符向量。然后,创建作为 chr 子字符串的新字符向量。

chr = 'peppers and onions'
chr = 
'peppers and onions'

选择第 8 个位置前的子字符串。

newChr = extractBefore(chr,8)
newChr = 
'peppers'

选择子字符串前的文本。

newChr = extractBefore(chr,' and')
newChr = 
'peppers'

输入参数

全部折叠

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

str 中标记提取文本的结束位置的文本或模式,指定为以下项之一:

  • 字符串数组

  • 字符向量

  • 字符向量元胞数组

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

extractBefore 函数从提取的子字符串中排除 pat

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

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

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

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

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

输出参数

全部折叠

输出文本,以字符串数组、字符向量或字符向量元胞数组形式返回。

扩展功能

在 R2016b 中推出