String name = "Jack";
char letter = name.charAt(0);
System.out.println(letter);
这是一个java方法charAt
通过告诉你字符串的索引,它给你一个字符串的字符。我要求在Dart中有这样的方法,Dart有这样的方法吗?
您可以使用String.operator[]
String name = "Jack";
String letter = name[0];
print(letter);
请注意,这是在UTF-16代码单元上操作的,而不是在Unicode代码点或字形簇上操作。还要注意,Dart没有char
类型,因此您最终将使用另一个String
。
如果您需要对任意Unicode字符串进行操作,那么您应该使用package:characters
并执行:
String name = "Jack";
Characters letter = name.characters.characterAt(0);
print(letter);
Dart有两个与Java行为匹配的操作,因为Java专门打印char
类型的整数。
Dart有String.codeUnitAt
,它的作用与Java的charAt
相同:返回一个整数,表示字符串中该位置的UTF-16代码单元。如果你在Dart中打印它,或者把它加到StringBuffer
上,它只是一个整数,所以print("Jack".codeUnitAt(0))
打印74
。
其他操作是String.operator[]
,它返回一个单代码单元String
。因此,print("Jack"[0])
打印J
。
两者都应该谨慎使用,因为许多Unicode字符不仅仅是一个单独的代码单元。您可以使用String.runes
来获取代码点,或者使用String.characters
从包characters
中获取grapheme集群(这通常是您应该使用的,除非您碰巧知道文本仅为ASCII)
可以使用
String.substring(int startIndex, [ int endIndex ])
例子——
void main(){
String s = "hello";
print(s.substring(1, 2));
}
输出e
请注意,endIndex比startIndex大1,并且返回的字符存在于startIndex中。