var dataJson = response.body;
dataJson = dataJson.replaceAll('[', '');
dataJson = dataJson.replaceAll(']', '');
dataJson = dataJson.replaceAll('"', '');
var matchData = dataJson.split(',').toList();
//matchData.sort((a, b) => a.compareTo(b)); I tested this too
matchData.sort();
dataJson = [KR_1,KR_3,KR_4,KR_2,KR_7,KR_6,KR_5]
我想像這樣對串列進行排序:
[KR_1,KR_2,KR_3,KR_4,KR_5,KR_6,KR_7]
謝謝
uj5u.com熱心網友回復:
您的代碼的問題是,給定 a String '["KR_1", "KR_3", "KR_4", "KR_2", "KR_7", "KR_6", "KR_5"]'(給定您的代碼,我認為這是您真正擁有的),在洗掉括號和引號后,當您這樣做時dataJson.split(','),結果的元素List仍將包含空格。某些元素開頭的空格會導致您獲得意外的排序順序。
(順便說一句,String.split已經回傳 a List<String>,因此再次呼叫.toList()它是不必要且浪費的。)
dataJson.split(', ')您可以通過使用而不是或通過顯式呼叫String.trim每個元素來洗掉空格。但實際上你不應該自己決議 JSON:
import 'dart:convert';
void main() {
var dataJson = '["KR_1", "KR_3", "KR_4", "KR_2", "KR_7", "KR_6", "KR_5"]';
var matchData = json.decode(dataJson);
matchData..sort();
print(matchData); // Prints: [KR_1, KR_2, KR_3, KR_4, KR_5, KR_6, KR_7]
}
請注意,以上按字典順序對字串進行排序(即按字符代碼順序),因此"KR_10"將在"KR_2". 如果您不希望這樣,請參閱:有沒有辦法按字串內的數字對字串串列進行排序?
uj5u.com熱心網友回復:
嘗試這個;
final dataJson = ["KR_1", "KR_3", "KR_4", "KR_2", "KR_7", "KR_6", "KR_5"];
final data = dataJson.toList()..sort((a,b)=> a.compareTo(b));
log(data.toString()); // or use print
// 結果
[KR_1, KR_2, KR_3, KR_4, KR_5, KR_6, KR_7]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/485618.html
