如何对 0 到 30 进行子字符串化,但前提是字符数超过 30 个

Tob*_* H. 2 string substring flutter

我有一个小问题,我想对一个字符串进行子串,最多 30 个字符,但是当我这样做时string.substring(0, 30),如果字符串超过 30 个字符,它可以正常工作,但如果不是,则会出现错误。

有谁知道如何解决这个问题?

lav*_*ava 5

import 'dart:math';
string.substring(0, min(30, string.length));
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在上图中,您可以看到 2 个变量below30above30

substring(int start, [int? end]);
Run Code Online (Sandbox Code Playgroud)

当我们这样使用时,below30.substring(0,30) 我们会得到RangeError (end): Invalid value: Not in inclusive range 0..15: 30 错误。因为below30长度是15above30会给出正确的结果,因为它有32性格。

所以克服这个问题你可以这样使用:

string.substring(0, min(30, string.length));
Run Code Online (Sandbox Code Playgroud)

min(num a, num b)=> 返回两个数字中较小的一个。num(抽象类)可能doubleint。所以这里我们没有得到任何错误invalid range

在此输入图像描述

为了方便使用,您可以below30.characters.take(30)不再使用复杂性。@@atreeon。

对于批量数据操作方法将比方法substring快得多take

Build time: 3812 ms
Time substring: 391 ms, Time take: 1828 ms

Build time: 4172 ms
Time substring: 406 ms, Time take: 2141 ms
Run Code Online (Sandbox Code Playgroud)