将String变量拆分为具有指定长度的随机子字符串

时间:2017-09-26 01:20:34

标签: java string random

在java中。  它应该使用随机数生成器返回随机选择的具有指定长度的文本子字符串。如果长度为负或大于文本的长度,则该方法应抛出IllegalArgumentException。例如,chooseSubstring(" abcde",4,new Random())应返回" abcd"大约一半的时间和" bcde"大约一半的时间。

var rx = new Regex(@"^.*?\[.*?\]\/");
var res = rx.Replace("Tester[0]/Test[4]/testId", "", 1 /*only one occurrence */);

基本上,我想从变量 text 返回一个子字符串。子字符串必须是可变长度的长度。该子字符串的开头应该从随机数生成器确定的随机位置开始。我的问题是随机数生成器没有确保子串是正确的长度。

public static String chooseSubstring (String text, int length, Random rand)
{
    int randomNum = rand.nextInt(length);
    String answer = text.substring(randomNum);
    return answer;
}

应该返回 System.out.println(chooseSubstring("abcde", 4, new Random())); abcd大约相同的次数。而是返回: bcde bcde cde de。 任何有关如何解决这个问题的信息都会非常有用,谢谢!

1 个答案:

答案 0 :(得分:1)

您的代码在0和length之间的随机索引处获取子字符串,不包括。您必须指定结束索引,以便它不会扩展到字符串的末尾。您还需要缩小起始索引的范围,以便结束索引不会越过字符串:

int randomNum = rand.nextInt(text.length() - length + 1);
String answer = text.substring(randomNum, randomNum + length);