如果我们想检查字符串是否以特定字符开头…我们可以这样做:
var string = 'Dart';
string.startsWith('D'); // true
如果我们想检查给定字符串是否以多个字符开头,该怎么办....我想实现这个行为:
RegExp myRegExp = ('a-zA-Z0-9');
var string = 'Dart';
string.startsWith('D' + myRegExp);
上面的代码对吗?!!
我的目标是检查字符串是否以我指定的字母开头…然后是RegExp....不检查字符串是否只以'D'开头,这就是它…
如果我们想检查给定字符串是否以多个字符开头....该怎么办我想实现这个行为:
RegExp myRegExp = ('a-zA-Z0-9'); var string = 'Dart'; string.startsWith('D' + myRegExp);
那不行。'D'
是一个String
对象,myRegExp
可能是一个RegExp
对象。(你的语法不正确;你可能需要RegExp myRegExp = RegExp('[a-zA-Z0-9]');
。)String
和RegExp
都来自Pattern
基类,但Pattern
不提供operator+
,String.operator+
只能与其他String
一起工作。从概念上讲,不清楚添加String
和RegExp
应该做什么;返回一个String
?返回RegExp
?
你应该只写一个正则表达式来解释你的第一个字符:
RegExp myRegExp = RegExp('D[a-zA-Z0-9]');
但是,如果您希望第一个字符是可变的,那么您就不能将其放入RegExp
模式所使用的字符串字面值中。
您可以将这两个部分分别匹配:
var prefix = 'D';
var restRegExp = RegExp(r'[a-zA-Z0-9]');
var string = 'Dart';
var startsWith =
string.startsWith(prefix) &&
string.substring(prefix.length).startsWith(restRegExp);
或者您可以动态地构建正则表达式:
var prefix = 'D';
var restPattern = r'[a-zA-Z0-9]';
// Escape the prefix in case it contains any special regular expression
// characters. This is particularly important if the prefix comes from user
// input.
var myRegExp = RegExp(RegExp.escape(prefix) + restPattern);
var string = 'Dart';
var startsWith = string.startsWith(myRegExp);
我想你会想要string.startsWith(RegExp('D' + '[a-zA-Z0-9]'))
;