随机生成单词并用通配符替换一些字符

时间:2014-11-18 10:37:54

标签: java regex

我想知道如何编写一个随机生成单词的程序,然后随机选择其中一些单词并用*替换该单词的随机字符。 *表示通配符,它​​是a-z中任何字符的替换。然后将此txt文件用作和样本来测试我的主程序,此程序目前正常工作。我会使用这个随机的单词列表来测试程序需要多长时间使用二进制搜索然后进行常规搜索。

我不需要代码,但需要一个想法或一个例子如何做到这一点。

1 个答案:

答案 0 :(得分:0)

你可以像这样创建随机单词: 对随机int值使用方法Math.random()。 将这些int值转换为char值。 示例:char c = (char) 65; 为此,您必须阅读有关ASCII值的内容。 (65演员到' A')

我写了一个完整的例子,你可以使用它。

public class Test {

    private static String createWord(int wordlength) {
        String word = "";
        for (int i = 0; i < wordlength; i++) {
            int ran = (int) (Math.random() * 2);
            if (ran == 0)
                word += (char) (int) (Math.random() * 26 + 'A');
            else
                word += (char) (int) (Math.random() * 26 + 'a');
        }
        return word;
    }

    public static void main(String[] args) {

        System.out.println(createWord(8));
    }
}

这个答案只是关于创建随机单词。

如果你想在单词/字符串中交换随机char,你可以看看String的替换(oldChar,newChar)方法与使用Math.random创建随机字符( )。

编辑:你想将一个字母变成一个通配符(word - &gt; wo.d),还是一些随机字母(word - &gt; wKrd)?

对于第二个,您可以使用以下方法:

private static String replaceCharInWord(String word) {
    int random = (int) (Math.random() * word.length());
    System.out.println(random);
    int ran = (int) (Math.random() * 2);
    char newChar = ' ';
    if (ran == 0)
        newChar = (char) (int) (Math.random() * 26 + 'A');
    else
        newChar = (char) (int) (Math.random() * 26 + 'a');
    return word.substring(0, random) + newChar + word.substring(random + 1);
}