如何在dart中生成随机字符串?

brtdzjyr  于 2023-03-05  发布在  其他
关注(0)|答案(5)|浏览(169)

我想在dart中创建一个生成随机字符串的函数。它应该包含字母和数字混合在一起。我该怎么做呢?

isr3a4wc

isr3a4wc1#

或者如果你不想使用软件包,你可以做一个简单的实现,比如:

import 'dart:math';

void main() {
  print(getRandomString(5));  // 5GKjb
  print(getRandomString(10)); // LZrJOTBNGA
  print(getRandomString(15)); // PqokAO1BQBHyJVK
}

const _chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
Random _rnd = Random();

String getRandomString(int length) => String.fromCharCodes(Iterable.generate(
    length, (_) => _chars.codeUnitAt(_rnd.nextInt(_chars.length))));

我需要补充的是,您不应该使用此代码生成密码或其他类型的秘密。如果您这样做,请至少使用Random.secure()来创建随机生成器。

cetgtptt

cetgtptt2#

选项A(带字符代码):

import 'dart:math';

String generateRandomString(int len) {
  var r = Random();
  return String.fromCharCodes(List.generate(len, (index) => r.nextInt(33) + 89));
}

使用可见字符(包括特殊字符)生成随机字符串。

带有预定义字符串的选项B:

import 'dart:math';

String generateRandomString(int len) {
  var r = Random();
  const _chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
  return List.generate(len, (index) => _chars[r.nextInt(_chars.length)]).join();
}
ulydmbyx

ulydmbyx3#

blog article中找到关于加密字符串的以下内容:

import 'dart:math';
import 'dart:convert';

String getRandString(int len) {
  var random = Random.secure();
  var values = List<int>.generate(len, (i) =>  random.nextInt(255));
  return base64UrlEncode(values);
}

字符串总是以==结尾,我也认为这不是最快的解决方案,但是你不需要第三方包,也不需要声明晦涩的常量。

5vf7fwbs

5vf7fwbs4#

import 'dart:math';
    
    String generateRandomString(int len) {
    var r = Random();
    String randomString =String.fromCharCodes(List.generate(len, (index)=> r.nextInt(33) + 89));
      return randomString;
    }
acruukt9

acruukt95#

如果您关心随机字符串的唯一性和安全性,可以轻松地使用UUID package

var uuid = Uuid();
// Generate a v1 (time-based) id
uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'
// Generate a v4 (random) id
uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'

相关问题