You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart中未知索引时提取字符串内√x并分组的实现方法

Dart提取字符串中的平方根表达式并生成对应变量

核心思路

利用正则表达式匹配所有从√开始到下一个运算符(示例中为+、-)的内容,无需提前知道索引位置;再根据匹配结果的数量,生成对应变量声明或存入集合管理。

代码实现

import 'dart:core';

void main() {
  // 定义匹配平方根表达式的正则:匹配√开头,直到遇到+、-或字符串结束的内容
  final sqrtRegex = RegExp(r'√[^+\-]+');

  // 示例1:单平方根表达式
  final userQuestion1 = '10+5-√x+96';
  final matches1 = sqrtRegex.allMatches(userQuestion1)
      .map((match) => match.group(0)!)
      .toList();
  
  // 生成对应变量声明代码
  for (var i = 0; i < matches1.length; i++) {
    final varName = i == 0 ? 'squareRoot' : 'squareRoot${i+1}';
    print('var $varName = \'${matches1[i]}\';');
  }

  print('---');

  // 示例2:多个平方根表达式
  final userQuestion2 = '10+5-√x+96-√x-2+√x';
  final matches2 = sqrtRegex.allMatches(userQuestion2)
      .map((match) => match.group(0)!)
      .toList();
  
  for (var i = 0; i < matches2.length; i++) {
    final varName = i == 0 ? 'squareRoot' : 'squareRoot${i+1}';
    print('var $varName = \'${matches2[i]}\';');
  }
}

输出结果

运行上述代码后,控制台会输出:

var squareRoot = '√x';
---
var squareRoot = '√x';
var squareRoot2 = '√x';
var squareRoot3 = '√x';

补充说明

如果需要在运行时直接处理这些平方根表达式,而非生成变量代码,推荐将匹配结果存入列表:

List<String> squareRootExpressions = sqrtRegex.allMatches(userQuestion)
    .map((m) => m.group(0)!)
    .toList();

这种方式更符合Dart静态语言特性,便于后续遍历、修改或计算。

内容的提问来源于stack exchange,提问作者red X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:01:08