actionscript3.0 替换花括号对
actionscript3.0 replace curly brace pair
var strToBeReplace:String= "Hi! I am {0}, and I like {1}, I used to be a {2}"; // many {\d} like curly brace to be replace
trace(replaceCurlyBrace(strToBeReplace, "tom", "eating", "techer"));
// expect output: Hi! I am tom, and I like eating, I used to be a teacher
function replaceCurlyBrace(str:String, ... args):void
{
// ... how to implement
}
我试过这个:
var str:String = "bla bla {0} bla";
var reg:Regexp = new Regexp("{0}");
trace(strToBeReplace.replace(reg,"tim"));
// real output : bla bla {0} bla
但是没用。
我曾尝试过双斜杠式正则表达式:/{0}/,但 ide 抱怨语法错误。
试试这个表达式 \{\d*?\}
。请注意,要转义字符,您需要使用 \
,即反斜杠。
在你的例子中
var str:String = "bla bla {0} bla";
var reg:Regexp = new Regexp("\{0\}");
trace(strToBeReplace.replace(reg,"tim"));
// real output : bla bla tim bla
让我们从您尝试过的内容开始:
var reg:RegExp = new RegExp('{0}'); // you can write it : var reg:RegExp = /{0}/;
var str:String = 'bla bla {0} bla';
trace(str.replace(reg, 'tim'));
这里你应该知道{}
是一个quantifier metacharacter
用于指定前一项的数字量词或量词范围,例如,如果你写 /a{3}/
你告诉
您正在寻找任何 'aaa' 字符串的编译器,因此实际上编写 /{0}/
没有任何感觉或实用程序。
所以要向编译器表明您正在寻找字符串 "{0}"
,您可以这样做:
var reg:RegExp = /{[0]}/; // you can write it : var reg:RegExp = new RegExp('{[0]}');
或者,您可以使用单个 \
(如果使用字符串 \
)转义 {}
:
var reg:RegExp = /\{0}/; // you can write it : var reg:RegExp = new RegExp('\{0}');
哪个给你这个代码:
var reg:RegExp = new RegExp('\{0}');
var str:String = 'bla bla {0} bla';
trace(str.replace(reg, 'tim')); // gives : bla bla tim bla
回到你的问题,你的字符串中有 n
个词要替换,所以你可以这样做:
var str:String = 'Welcome to {0}, the free {1} that {2} can {3}.';
str = replaceCurlyBrace(str, 'Wikipedia', 'encyclopedia', 'anyone', 'edit');
trace(str); // gives : Welcome to Wikipedia, the free encyclopedia that anyone can edit.
function replaceCurlyBrace(str:String, ... args): String {
var exp0:RegExp = /\{/, // or : /{[/
exp1:RegExp = /}/, // or : /]}/
regex:RegExp;
// if we have words
if(args.length > 0) {
for(var i:int = 0; i<args.length; i++){
// you can also write it : regex = new RegExp('\{' + i + '}');
// or regex = new RegExp('{[' + i + ']}');
regex = new RegExp(exp0.source + i + exp1.source);
str = str.replace(regex, args[i]);
}
}
return str;
}
关于RegExp
的更多详情,您可以查看:
- Regular expression syntax.
- Methods for using regular expressions with strings。
- regexr.com(或许多其他网站),您可以在其中测试您的正则表达式。
希望能帮到你。
var strToBeReplace:String= "Hi! I am {0}, and I like {1}, I used to be a {2}"; // many {\d} like curly brace to be replace
trace(replaceCurlyBrace(strToBeReplace, "tom", "eating", "techer"));
// expect output: Hi! I am tom, and I like eating, I used to be a teacher
function replaceCurlyBrace(str:String, ... args):void
{
// ... how to implement
}
我试过这个:
var str:String = "bla bla {0} bla";
var reg:Regexp = new Regexp("{0}");
trace(strToBeReplace.replace(reg,"tim"));
// real output : bla bla {0} bla
但是没用。
我曾尝试过双斜杠式正则表达式:/{0}/,但 ide 抱怨语法错误。
试试这个表达式 \{\d*?\}
。请注意,要转义字符,您需要使用 \
,即反斜杠。
在你的例子中
var str:String = "bla bla {0} bla";
var reg:Regexp = new Regexp("\{0\}");
trace(strToBeReplace.replace(reg,"tim"));
// real output : bla bla tim bla
让我们从您尝试过的内容开始:
var reg:RegExp = new RegExp('{0}'); // you can write it : var reg:RegExp = /{0}/;
var str:String = 'bla bla {0} bla';
trace(str.replace(reg, 'tim'));
这里你应该知道{}
是一个quantifier metacharacter
用于指定前一项的数字量词或量词范围,例如,如果你写 /a{3}/
你告诉
您正在寻找任何 'aaa' 字符串的编译器,因此实际上编写 /{0}/
没有任何感觉或实用程序。
所以要向编译器表明您正在寻找字符串 "{0}"
,您可以这样做:
var reg:RegExp = /{[0]}/; // you can write it : var reg:RegExp = new RegExp('{[0]}');
或者,您可以使用单个 \
(如果使用字符串 \
)转义 {}
:
var reg:RegExp = /\{0}/; // you can write it : var reg:RegExp = new RegExp('\{0}');
哪个给你这个代码:
var reg:RegExp = new RegExp('\{0}');
var str:String = 'bla bla {0} bla';
trace(str.replace(reg, 'tim')); // gives : bla bla tim bla
回到你的问题,你的字符串中有 n
个词要替换,所以你可以这样做:
var str:String = 'Welcome to {0}, the free {1} that {2} can {3}.';
str = replaceCurlyBrace(str, 'Wikipedia', 'encyclopedia', 'anyone', 'edit');
trace(str); // gives : Welcome to Wikipedia, the free encyclopedia that anyone can edit.
function replaceCurlyBrace(str:String, ... args): String {
var exp0:RegExp = /\{/, // or : /{[/
exp1:RegExp = /}/, // or : /]}/
regex:RegExp;
// if we have words
if(args.length > 0) {
for(var i:int = 0; i<args.length; i++){
// you can also write it : regex = new RegExp('\{' + i + '}');
// or regex = new RegExp('{[' + i + ']}');
regex = new RegExp(exp0.source + i + exp1.source);
str = str.replace(regex, args[i]);
}
}
return str;
}
关于RegExp
的更多详情,您可以查看:
- Regular expression syntax.
- Methods for using regular expressions with strings。
- regexr.com(或许多其他网站),您可以在其中测试您的正则表达式。
希望能帮到你。