在字符串中查找字母(charAt)

18

我正在学习Dart,想知道如何在字符串中查找字母。我已经尝试使用charAt(),但是Dart编辑器会提示:

类'String'没有实例方法'charAt'。

那么我的问题是:如何在Dart中查找字符串中的字母?

例如,我想在单词"fire"中查找"i"。如果没有charAt(),这该怎么做呢?

var items = "fire";

for (int i = 0; items.length; i++) {
  if (items.indexOf(items(charAt(i)) != -1) {
    //..
  }
}    

1
我无法将我的答案发布为答案,因此我尝试作为评论:我认为<!-- language: lang-dart --> items.indexOf('i'); print(items.indexOf('i')); // 打印:1,因为'i'在第二个位置被找到这就是您要寻找的内容,但您已经在问题中使用了它。 - Günter Zöchbauer
1
你的代码毫无意义,如果你只想查找 JS 字符串值中是否存在“i”,那么使用 .indexOf("i") 就已经足够了,不需要任何循环。 - CBroe
1
我也无法发布答案。charAt被实现为[]运算符。 - Sign
3个回答

41

正如评论中所说,大多数情况下不必创建自己的函数,因为 indexOf / allMatches / contains 已经足够使用。

而且,由于String作为字符列表,所以没有charAt()等效函数。您可以使用[]运算符获取特定索引处的字母:

'Hello World'[6] //return 'W'

9

我认为

items.indexOf('i');

print(items.indexOf('i')); // prints: 1 because 'i' is found on the 2nd position

这是您正在寻找的内容,但您已经在问题中使用了它。


1

使用contains方法!

如果此字符串包含[other]的匹配项,则返回true:

var string = 'Dart strings';
string.contains('D');                     // true
string.contains(new RegExp(r'[A-Z]'));    // true

如果提供了[startIndex],则此方法仅在该索引处或之后匹配:
string.contains('X', 1);                  // false
string.contains(new RegExp(r'[A-Z]'), 1); // false

[startIndex] 不能为负数或大于[length]。

bool contains(Pattern other, [int startIndex = 0]);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接