Groovyを使用して、特定の正規表現からランダムな文字シーケンスを生成したいと思います。
[A-Z0-9]
例:A586FT3HS
ただし、役立つコードスニペットは見つかりません。正規表現の使用が複雑すぎる場合は、許可された文字セットを手動で定義しても問題ありません。
Apache commonsを使用したくない場合、またはGrailsを使用していない場合、代替手段は次のとおりです。
def generator = { String alphabet, int n ->
new Random().with {
(1..n).collect { alphabet[ nextInt( alphabet.length() ) ] }.join()
}
}
generator( (('A'..'Z')+('0'..'9')).join(), 9 )
繰り返しますが、あなたはalphabet
を自分で作成する必要があります...正規表現を解析し、通過する文字のアルファベットを抽出できるものは知りません...
import org.Apache.commons.lang.RandomStringUtils
String charset = (('A'..'Z') + ('0'..'9')).join()
Integer length = 9
String randomString = RandomStringUtils.random(length, charset.toCharArray())
インポートされたクラスRandomStringUtils
は既にGrailsクラスパス上にあるため、Grailsアプリを作成している場合、クラスパスに何も追加する必要はありません。
文字列に英数字のみを含める場合は、上記を次のように置き換えることができます
String randomString = org.Apache.commons.lang.RandomStringUtils.random(9, true, true)
SoupUIユーザーの場合:
def generator = { String alphabet, int n ->
new Random().with {
(1..n).collect { alphabet[ nextInt( alphabet.length() ) ] }.join()
}
}
randomValue = generator( (('A'..'Z')+('0'..'9')+('a'..'z')).join(), 15 )
testRunner.getTestCase().setPropertyValue("randomNumber", randomValue);
ランダムなテキスト文字列を生成する単一行のコマンド/ステートメントは次のとおりです。
print new Random().with {(1..9).collect {(('a'..'z')).join()[ nextInt((('a'..'z')).join().length())]}.join()}
または
def randText = print new Random().with {(1..9).collect {(('a'..'z')).join()[ nextInt((('a'..'z')).join().length())]}.join()}
このコードは、Webで見つけた純粋なGroovyです。
def key
def giveMeKey(){
String alphabet = (('A'..'N')+('P'..'Z')+('a'..'k')+('m'..'z')+('2'..'9')).join()
def length = 6
key = new Random().with {
(1..length).collect { alphabet[ nextInt( alphabet.length() ) ] }.join()
}
return key
}
戻り文字列は、ローカルで使用するには十分です。
BFx9PU
MkbRaE
FKvupt
gEwjby
Gk2kK6
uJmzLB
WRJGKL
RnSUQT