2012-10-28 77 views
1

我嘗試計算句子中有多少個字母「a」:「Hello Jordania」。使用Dart計算字符串中的一個字母的數字

我發現該函數包含。我用這樣的:

var phrase = "Hello Jordania; 
    var comptenbrdea = phrase.contains('a'); 
    print(comptenbrdea); 

我得到「真」作爲響應。正常,你會說,我知道,但我沒有找到正確的函數來計算我有多少次a。如果我可以檢查每一個字符,我可以用循環做些事情? ...我迷失在http://www.dartlang.org/search.html?cx=011220921317074318178%3Ai4mscbaxtru&ie=UTF-8&hl=en&q=string_scanner ...有人能幫助我嗎?

+0

核選擇:使用正則表達式來刪除不是'了'一切,然後得到任何遺骸的長度。 –

+0

我找到這個函數:地圖 letterFrequency(String text){textTextWontSpaces = text.replaceAll('\ n','')。 replaceAll('','').replaceAll('。',''); List charList = textWoutSpaces.splitChars(); charList.sort((m,n)=> m.compareTo(n)); var charMap = {};如果(char =='o'){ charMap [char] = charMap.putIfAbsent(char,()=> 0)+ 1; } } return charMap; } – Peter

回答

4

這裏有一個簡單的方法來做到這一點:

void main() { 
    print('a'.allMatches('Hello Jordania').length); // 2 
} 

編輯:測試字符串參數,而不是字符被計數。

1

您需要對字符進行迭代並對它們進行計數,上面的註釋包含用於構建直方圖的一般函數,但只計算'a'的版本可能對您有用。我就告訴你如何循環字符:

var myString = "hello"; 
for (var char in myString.splitChars()) { 
    // do something 
} 
0
// count letters 
    Map<int,int> counts = new Map<int,int>(); 
    for (var c in s.charCodes()) { 
    counts[c] = counts.putIfAbsent(c, p()=>0) + 1; 
    } 
    // print counts 
    for (var c in counts.getKeys()) 
    print("letter ${new String.fromCharCodes([c])} count=${counts[c]}"); 
1
void main() { 
    const regExp = const RegExp("a"); 
    print(regExp.allMatches("Hello Jordania").length); // 2 
} 
相關問題