Tob*_* H. 2 string substring flutter
我有一个小问题,我想对一个字符串进行子串,最多 30 个字符,但是当我这样做时string.substring(0, 30),如果字符串超过 30 个字符,它可以正常工作,但如果不是,则会出现错误。
有谁知道如何解决这个问题?
import 'dart:math';
string.substring(0, min(30, string.length));
Run Code Online (Sandbox Code Playgroud)
在上图中,您可以看到 2 个变量below30和above30
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长度是15。above30会给出正确的结果,因为它有32性格。
所以克服这个问题你可以这样使用:
string.substring(0, min(30, string.length));
Run Code Online (Sandbox Code Playgroud)
min(num a, num b)=> 返回两个数字中较小的一个。num(抽象类)可能double或int。所以这里我们没有得到任何错误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)
| 归档时间: |
|
| 查看次数: |
3214 次 |
| 最近记录: |