Flutter 如何在DART中获得两个字符串之间的子字符串?
如何实现类似的解决方案:但在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(开始
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();