假设我有一个n个字符的字符串,但我想把它削减到10个字符(假设字符串总是大于10个字符),我不知道字符串的内容。怎么修成这样?我知道如何在某个角色之后修剪它
String s = "one.two"; //Removes everything after first '.' String result = s.substring(0, s.indexOf('.')); print(result);
但如何删除后,一定数量的字符?
yqhsw0fo1#
所有的答案(使用substring)都得到前10个UTF-16代码单元,这与前10个字符不同,因为有些字符由两个代码单元组成。最好使用characters包:
substring
characters
import 'package:characters/characters.dart'; void main() { final str = "Hello 😀 World"; print(str.substring(0, 9)); // BAD print(str.characters.take(9)); // GOOD }
印刷品
➜ dart main.dart Hello 😀 Hello 😀 W
使用substring时,您甚至可能得到半个字符(这是无效的):
print(str.substring(0, 7)); // BAD print(str.characters.take(7)); // GOOD
印刷品:
Hello � Hello 😀
qmb5sa222#
如果string的长度小于trimmed length,上面的例子就会失败。下面的代码可以处理短字符串和长字符串:
import 'dart:math'; void main() { String s1 = 'abcdefghijklmnop'; String s2 = 'abcdef'; var trimmed = s1.substring(0, min(s1.length,10)); print(trimmed); trimmed = s2.substring(0, min(s2.length,10)); print(trimmed); }
注意: dart 字符串例程在UTF-16代码单元上操作。对于大多数拉丁语和西里尔语来说,这不是问题,因为所有字符都适合一个代码单元。然而,表情符号,一些亚洲,非洲和中东语言可能需要2个代码单元来编码一个字符。例如,'😊'.length将返回2,尽管它是一个字符串。请参阅characters包。
'😊'.length
ifmq2ha23#
我想这应该行得通。
String result = s.substring(0, 10);
qnzebej04#
将String裁剪为一定数量的字符。下面的. code非常好用:
String
// initialise your string here String s = 'one.two.three.four.five'; // trim the string by getting the first 10 characters String trimmedString = s.substring(0, 10); // print the first ten characters of the string print(trimmedString);
输出:
one.two.th
我希望这能帮上忙
pprl5pva5#
您可以通过多种方式来实现这一点。
'string'.substr(start, ?length)
'one.two.three.four.five'.substr(0, 10)
'string'.substring(start, ?end)
'one.two.three.four.five'.substring(0, 10)
'string'.slice(start, ?end)
'one.two.three.four.five'.slice(0, 10)
ncecgwcz6#
要按指定字符修剪所有尾随/右侧字符,请使用以下方法:
static String trimLastCharacter(String srcStr, String pattern) { if (srcStr.length > 0) { if (srcStr.endsWith(pattern)) { final v = srcStr.substring(0, srcStr.length - 1 - pattern.length); return trimLastCharacter(v, pattern); } return srcStr; } return srcStr; }
例如,您希望删除小数点后的所有0
0
$123.98760000
那就叫它过去吧
trimLastCharacter("$123.98760000", "0")
$123.9876
6条答案
按热度按时间yqhsw0fo1#
所有的答案(使用
substring
)都得到前10个UTF-16代码单元,这与前10个字符不同,因为有些字符由两个代码单元组成。最好使用characters
包:印刷品
使用
substring
时,您甚至可能得到半个字符(这是无效的):印刷品:
qmb5sa222#
如果string的长度小于trimmed length,上面的例子就会失败。下面的代码可以处理短字符串和长字符串:
注意: dart 字符串例程在UTF-16代码单元上操作。对于大多数拉丁语和西里尔语来说,这不是问题,因为所有字符都适合一个代码单元。然而,表情符号,一些亚洲,非洲和中东语言可能需要2个代码单元来编码一个字符。例如,
'😊'.length
将返回2,尽管它是一个字符串。请参阅characters包。ifmq2ha23#
我想这应该行得通。
qnzebej04#
将
String
裁剪为一定数量的字符。下面的. code非常好用:输出:
我希望这能帮上忙
pprl5pva5#
您可以通过多种方式来实现这一点。
'string'.substr(start, ?length)
用途:-'one.two.three.four.five'.substr(0, 10)
'string'.substring(start, ?end)
用途:-'one.two.three.four.five'.substring(0, 10)
'string'.slice(start, ?end)
用途:-'one.two.three.four.five'.slice(0, 10)
ncecgwcz6#
要按指定字符修剪所有尾随/右侧字符,请使用以下方法:
例如,您希望删除小数点后的所有
0
那就叫它过去吧
输出: