【问题标题】:Randomly generating words and replacing some characters with wildcard随机生成单词并用通配符替换一些字符
【发布时间】:2014-11-18 10:37:54
【问题描述】:

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

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

【问题讨论】:

  • 欢迎来到 Stack Overflow!看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(控制台输出、堆栈跟踪、编译器错误 - 不管是什么适用的)。您提供的详细信息越多,您可能收到的答案就越多。
  • 不,我是在询问一个想法或如何做到这一点,而不是给我一个代码
  • 我认为,如果您更清楚地定义您希望程序做什么,那么您将如何编写它会更明显。你是什​​么意思它会随机生成单词?它应该制作由空格分隔的可变长度的随机字符块,还是需要一个真实单词的字典来选择?我看到了正则表达式标签,但你认为正则表达式会有什么帮助?为什么你说只有在选词后才用 * 字符替换字母,而不是在你选词时?
  • 您可能对 Xeger 感兴趣。检查此处接受的答案:stackoverflow.com/questions/274011/…

标签: java regex


【解决方案1】:

您可以像这样创建随机单词: 对随机 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));
    }
}

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

如果你想在一个单词/字符串中交换随机的chars,你可以结合使用 Math.random() 创建随机字符来看看 String 的 replace(oldChar, newChar) 方法。

编辑:您要将字符更改为通配符(word -> wo.d)还是随机字母(word -> 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多