replaceBetween
替换起点和终点之间的子字符串
语法
说明
将 newStr
= replaceBetween(str
,startPat
,endPat
,newText
)str
中的子字符串替换为 newText
中的文本。被替换的子字符串出现在子字符串 startPat
和 endPat
之间。但是,replaceBetween
不会替换 startPat
和 endPat
本身。replaceBetween
返回的结果为 newStr
。newText
参数包含的字符数可以不同于它所替换的子字符串。
如果 str
是字符串数组或字符向量元胞数组,replaceBetween
将替换 str
的每个元素中的子字符串。输出参数 newStr
的数据类型与 str
相同。
示例
替换子字符串之间的文本
创建字符串数组,并替换出现在子字符串之间的文本。
您可以使用双引号创建字符串。
str = "The quick brown fox"
str = "The quick brown fox"
替换出现在子字符串 quick
和 fox
之间的文本。replaceBetween
函数会替换文本,但不会替换输出中的 quick
或 fox
。
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
。
替换开始和结束位置之间的子字符串
创建字符串数组,并替换由数字指定的开始和结束位置之间的子字符串。
您可以使用双引号创建字符串。创建包含人名的字符串。要替换中间名,请指定字符串中的第七个和第十一个位置。
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
将不会替换边界。
您可以使用双引号创建字符串。
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'
输入参数
str
— 输入文本
字符串数组 | 字符向量 | 字符向量元胞数组
输入文本,指定为字符串数组、字符向量或字符向量元胞数组。
startPat
— 标记开始位置的文本或模式
字符串数组 | 字符向量 | 字符向量元胞数组 | pattern
数组(自 R2020b 开始提供)
标记要替换的文本的开始位置的文本或模式,指定为下列项之一:
字符串数组
字符向量
字符向量元胞数组
pattern
数组(自 R2020b 开始提供)
如果 str
是字符串数组或字符向量元胞数组,则可以替换 str
的每个元素中的子字符串。您可以指定子字符串在 str
的每个元素中都有相同的开头,或不同的开头。
要指定相同的开头,请将
startPat
指定为字符向量、字符串标量或pattern
对象。要指定不同开头,请将
startPat
指定为字符串数组、字符向量元胞数组或pattern
数组。
示例: replaceBetween(str,"AB","YZ",newText)
将 str
的每个元素中位于 AB
和 YZ
之间的子字符串替换为由 newText
指定的文本。
示例: 如果 str
是一个 2
×1
字符串数组,replaceBetween(str,["AB";"FG"],["YZ";"ST"],newText)
将替换 str(1)
中位于 AB
和 YZ
之间的子字符串,以及 str(2)
中位于 FG
和 ST
之间的子字符串。
endPat
— 标记结束位置的文本或模式
字符串数组 | 字符向量 | 字符向量元胞数组 | pattern
数组(自 R2020b 开始提供)
标记要替换的文本的结束位置的文本或模式,指定为下列项之一:
字符串数组
字符向量
字符向量元胞数组
pattern
数组(自 R2020b 开始提供)
如果 str
是字符串数组或字符向量元胞数组,则可以替换 str
的每个元素中的子字符串。您可以指定子字符串在 str
的每个元素中都有相同的结尾,或有不同的结尾。
要指定相同的结尾,请将
endPat
指定为字符向量、字符串标量或pattern
对象。要指定不同的结尾,请将
endPat
指定为字符串数组、字符向量元胞数组或pattern
数组。
示例: replaceBetween(str,"AB","YZ",newText)
将 str
的每个元素中位于 AB
和 YZ
之间的子字符串替换为由 newText
指定的文本。
示例: 如果 str
是一个 2
×1
字符串数组,replaceBetween(str,["AB";"FG"],["YZ";"ST"],newText)
将替换 str(1)
中位于 AB
和 YZ
之间的子字符串,以及 str(2)
中位于 FG
和 ST
之间的子字符串。
startPos
— 开始位置
数值数组
开始位置,指定为数值数组。
如果 str
是一个字符串数组或字符向量元胞数组,则 startPos
可以是与 str
具有相同大小的数值标量或数值数组。
示例: replaceBetween(str,5,9,newText)
将 str
的每个元素中从第五个到第九个位置之间的子字符串替换为由 newText
指定的文本。
示例: 如果 str
是一个 2
×1
字符串数组,replaceBetween(str,[5;10],[9;21],newText)
将替换 str(1)
中从第五个到第九个位置之间的子字符串,以及 str(2)
中从第十个到第二十一个位置之间的子字符串。
endPos
— 结束位置
数值数组
结束位置,指定为数值数组。
如果 str
是一个字符串数组或字符向量元胞数组,则 endPos
可以是与 str
具有相同大小的数值标量或数值数组。
示例: replaceBetween(str,5,9,newText)
将 str
的每个元素中从第五个到第九个位置之间的子字符串替换为由 newText
指定的文本。
示例: 如果 str
是一个 2
×1
字符串数组,replaceBetween(str,[5;10],[9;21],newText)
将替换 str(1)
中从第五个到第九个位置之间的子字符串,以及 str(2)
中从第十个到第二十一个位置之间的子字符串。
newText
— 替代文本
字符串数组 | 字符向量 | 字符向量元胞数组
替换文本,指定为字符串数组、字符向量或字符向量元胞数组。
如果 str
是一个字符串数组或字符向量元胞数组,则 newText
可以是与 str
具有相同大小的字符向量、字符串标量、字符串数组或元胞数组。
示例: replaceBetween(str,"AB","YZ","efg")
将 str
的每个元素中位于 AB
和 YZ
之间的子字符串替换为 efg
。
示例: 如果 str
是一个 2
×1
字符串数组,replaceBetween(str,["AB";"FG"],["YZ";"ST"],["efg";"lmnop"])
会将 str(1)
中位于 AB
和 YZ
之间的子字符串替换为 efg
,并将 str(2)
中位于 FG
和 ST
之间的子字符串替换为 lmnop
。
bounds
— 边界行为
'inclusive'
| 'exclusive'
边界行为,指定为 'inclusive'
或 'exclusive'
。当边界行为是包含时,由前面的参数指定的起点和终点将包含在被替换的文本中。如果边界行为是 exclusive(不包含),则不包含起点和终点。
输出参数
newStr
— 输出文本
字符串数组 | 字符向量 | 字符向量元胞数组
输出文本,以字符串数组、字符向量或字符向量元胞数组形式返回。str
和 newStr
具有相同的数据类型。
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
str
、startPat
、endPat
和newText
必须是字符串标量、字符向量或包含不超过一个字符向量的元胞数组。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
用法说明和限制:
startPat
和endPat
必须为字符串数组、字符向量或字符向量元胞数组。
有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2016b 中推出
另请参阅
split
| join
| replace
| erase
| eraseBetween
| extract
| extractBetween
| pattern
| lettersPattern
| textBoundary
| insertAfter
| insertBefore
| count
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)