Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在DART中获得两个字符串之间的子字符串?_Flutter_Dart - Fatal编程技术网

Flutter 如何在DART中获得两个字符串之间的子字符串?

Flutter 如何在DART中获得两个字符串之间的子字符串?,flutter,dart,Flutter,Dart,如何实现类似的解决方案:但在DART中 例如,我有一个字符串: String data=“敏捷的棕色狐狸跳过了懒狗” 我还有两个字符串:quick和over 我希望数据位于这两个字符串中,并期望得到结果: 褐狐跳跃 您可以将String.indexOf与String.substring组合使用: void main(){ const str=“敏捷的棕色狐狸跳过懒惰的狗”; const start=“快速”; const end=“结束”; 最终startIndex=str.indexOf(开始

如何实现类似的解决方案:但在DART中

例如,我有一个字符串:
String data=“敏捷的棕色狐狸跳过了懒狗”

我还有两个字符串:
quick
over

我希望
数据
位于这两个字符串中,并期望得到结果:
褐狐跳跃


您可以将
String.indexOf
String.substring
组合使用:

void main(){
const str=“敏捷的棕色狐狸跳过懒惰的狗”;
const start=“快速”;
const end=“结束”;
最终startIndex=str.indexOf(开始);
最终endIndex=str.indexOf(end,startIndex+start.length);
打印(str.substring(startIndex+start.length,endIndex));//布朗福克斯跳转
}

还要注意的是,
startIndex
是包含的,而
endIndex
是独占的。

您可以在regex的帮助下实现这一点。 创建一个函数,该函数将返回正则表达式匹配项

Iterable<String> _allStringMatches(String text, RegExp regExp) => 
regExp.allMatches(text).map((m) => m.group(0));
Iterable\u allStringMatches(字符串文本,RegExp RegExp)=>
regExp.allMatches(text.map)((m)=>m.group(0));

然后将您的正则表达式定义为
RegExp(r“[quick]{1}.[over]{1}”)
我喜欢带lookback的正则表达式
(?我几乎要用
RegExp
发布一个答案了。但是这个更好的字符串实际上是未格式化的
HTML
,而且非常长。
子字符串
方法因RangeError而失败。所以,@Sergey Solodukhin的答案对我来说很有效。这个对于较小的字符串来说非常棒。谢谢。@SukhchainSingh这是一个bug。我刚刚固定的it@RémiRousselet谢谢,它成功了。它比regexp快得多:)真实数据是什么?词序可能会改变“过急的棕色狐狸跳过懒惰的狗”或者一个关键字可能不存在。谢谢,我的字符串非常大,所以答案没有帮助。这一个很有魅力。
void main() {
  var re = RegExp(r'(?<=quick)(.*)(?=over)');
  String data = "the quick brown fox jumps over the lazy dog";
  var match = re.firstMatch(data);
  if (match != null) print(match.group(0));
}
final str = 'the quick brown fox jumps over the lazy dog';
final start = 'quick';
final end = 'over';

final startIndex = str.indexOf(start);
final endIndex = str.indexOf(end);
final result = str.substring(startIndex + start.length, endIndex).trim();