String类的replace()方法的函数参数的理解

本文介绍了在编程中如何使用replace方法来实现字符串的模式匹配及替换功能。通过两个具体实例展示了如何利用正则表达式和自定义函数进行复杂替换操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(来自帮助文档)
replace(pattern:*, repl:Object):String
对字符串匹配指定模式并返回一个新字符串,其中的第一个模式匹配项被替换为 repl 所指定的内容。
相对于字符串匹配指定的 pattern 并返回一个新字符串,其中的第一个 pattern 匹配项被替换为 repl 所指定的内容。 pattern 参数可以是字符串或正则表达式。 repl 参数可以是字符串或函数;如果是函数,将插入由该函数返回的字符串以替换匹配项。 未修改原始字符串。
指定一个函数作为 repl 时,replace() 方法将以下参数传递给该函数:
• 字符串的匹配部分。
• 任何捕获到的括号组匹配项都将作为下一组参数提供。 按这种方式传递的参数数目因括号匹配项的数目而异。 您可以通过检查函数代码中的 arguments.length - 3 来确定括号匹配项的数目。
• 字符串中匹配开始的索引位置。
• 完整的字符串。
例如,请看以下例子一:
var str1:String = "abc12 def34";
var pattern:RegExp = /([a-z]+)([0-9]+)/;//查找由字母和数字组合而成的字符串
var str2:String = str1.replace(pattern, replFN);
trace (str2); // 12abc 34def

function replFN():String {
return arguments[2] + arguments[1];
}
对replace() 方法的调用使用一个函数作为 repl 参数。 匹配两次正则表达式 (/([a-z]([0-9]/g)。
第一次,模式与子字符串 "abc12" 匹配,并将以下参数列表传递给该函数:
{"abc12", "abc", "12", 0, "abc12 def34"}
第二次,模式与子字符串 "def23" 匹配,并将以下参数列表传递给该函数:
{"def34", "def", "34", 6, "abc123 def34"}

例子二
var str:String = "Now only $9.95!";
var price:RegExp = /\$([\d,]+.\d+)+/i;//查找美元
trace(str.replace(price, usdToEuro));

function usdToEuro(matchedSubstring:String,
capturedMatch1:String,
index:int,
str:String):String
{
var usd:String = capturedMatch1;
usd = usd.replace(",", "");
var exchangeRate:Number = 0.853690;
var euro:Number = usd * exchangeRate;
const euroSymbol:String = String.fromCharCode(8364);
return euro.toFixed(2) + " " + euroSymbol;
}
//输出:Now only 7.68 €!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值