在本文中,我们将介绍Google Dart语言中的字符串反转。
如何实施解决方案
以下是完整的Dart解决方案:
void main(List<String> args) {
print( reverse(args[ 0 ]) ); } String reverse(input) {
return input.split( '' ).reversed.join(); input.split( ).reversed.join(); }
与C或Java一样,Dart使用函数名称main
作为程序的入口点。 在这种情况下,我们不需要main
返回任何数据,因此可以使用void
类型。 在主函数的参数中,您会看到List<String> args
,它将把args
定义为字符串列表,并使用参数形式将命令行输入的内容填充到该列表中,在这种情况下,这些参数只是用空格分隔的字符串。
例如:
dart reverse-string.dart "Hello World"
…将以[Hello World]
填充args列表。
dart reverse-string.dart "Hello" "World"
…将以[Hello, World]
填充args列表。
应当指出的是,在这个例子程序只传递给程序的第一个参数会被处理,因为我们只是通过添加索引位置经过第一个字符串列表中我们反向函数的输入[0]
以args
在print( reverse(args[0]) );
线。 因此,在上面的第二个示例中,只有Hello
会被撤消。
因此,让我们看一下反向函数。 我们使用String
类型定义了该函数,因为它将返回反转的字符串以打印到控制台。 它会将参数input
作为未定义的变量,但在此假设它是一个字符串值。
Dart:core
库的String类包含split
方法,该方法将根据给定的模式将一个字符串或字符串列表拆分为子字符串列表。 如果像我们的反向函数中那样该模式为空,则split将把输入分解为单个代码单位字符串(单个字符)。 因此带有空模式''
“ Hello”将返回[H,e,l,l,o]。
在将字符串拆分为带分隔符的字符后,我们将使用Dart:core
库的List类中的reversed
属性。 此属性仅获取一个列表,并以相反的顺序将其作为Iterable对象返回。 因此我们的示例列表[H,e,l,l,o]变为(o,l,l,e,H)。
就此示例程序而言,List和Iterable对象之间的差异很小。 两者实际上都是可迭代的。 在较高的层次上,列表将具有其他功能,例如对其元素的索引读/写访问和排序功能。 另一方面,通常在一次迭代操作(如for循环)期间将Iterables创建一次,然后将其作为只读数据进行访问。
Iterables和Lists都具有join
方法,该方法将获取其元素并将它们连接为字符串。 我们在反向Iterable上使用join
,它将作为reverse
函数的最终字符串值返回。 然后从main
print
功能将该值打印到控制台。
如何运行解决方案
要运行Dart字符串反向程序,请从GitHub下载dart文件,按照dart.dev所述安装Dart SDK,然后从命令行运行以下命令:
dart reverse-string.dart "Hello, World!"
或者,您可以将源代码复制到在线Dart解释器DartPad中 。 请记住,您将无法使用此方法访问命令行参数输入,因此您必须在代码中填充args变量。 例如:
void main(List<String> args) {
args = [ 'Hello World' ];
print( reverse(args[ 0 ]) ); } String reverse(input) {
return input.split( '' ).reversed.join(); input.split( ).reversed.join(); }
参考文献
- P.Ryon(slashdoom),“在Dart中扭转弦乐”,Renegade编码器,2019年10月16日。 [线上]。 可用: https : //therenegadecoder.com/code/reverse-a-string-in-dart/ 。 [访问:2019年10月16日]。 ↩
翻译自: https://www.javacodegeeks.com/2019/11/reverse-a-string-in-dart.html