在单词的每个字母之间插入一个数字

Posted

技术标签:

【中文标题】在单词的每个字母之间插入一个数字【英文标题】:Inserting a number between each letter of a word 【发布时间】:2017-06-18 06:34:41 【问题描述】:

我有一个项目要求我在单词的每个字母后插入一个随机数(0 到 9 之间),有什么方法可以简单地做到这一点?

System.out.println(sent.replaceAll(".(?!$)", "$0 "));

我可以使用此代码在每个字母之间留一个空格,但我不确定如何随机插入数字

Input = Table
Output would = T8a9b6l2e4

【问题讨论】:

您能否举一些示例输入和输出的示例。没有它,这只是纯粹的猜测 如果每个字母之间有空格,可以用随机数替换 是的,有一种方法可以轻松完成,但可能不使用正则表达式。正则表达式不擅长生成随机数字。最好使用一些更标准的 Java 代码,其中有一个类 Random 可以轻松生成随机数字。 sent = sent.replaceFirst(" ", r);问题只是这段代码,随机无法转换为字符串,所以我将如何解决这个问题(Netbeans) @Hexed 该错误现已修复。检查更新的答案 【参考方案1】:
String sent="a b c d e f";
Random r=new Random();
while(sent.contains(" "))
    int f= random.nextInt(9-0+1)+0;
    sent=sent.replaceFirst(" ",String.valueOf(f));

System.out.println(sent);

这应该可行,如果不可行,它可能会让您知道如何解决它

随机整数代码来自:Generating a Random Number between 1 and 10 Java

【讨论】:

谢谢,它说 r.next() 有错误;它需要一个int 我稍微更新了我的代码。唯一的问题是更换时的 r。你必须在那里找到一些东西 sent=sent.replaceFirst(" ",r);,您正在将Random 对象转换为String 我知道。我已经说过会有错误。我现在已经更新了。唯一要做的就是限制生成的整数的范围 每个字母之间有空格吗?否则,最简单和最快的方法就是遍历整个事物并创建一个新字符串,其中包含输入中的字母和随机事物中的数字。【参考方案2】:

类似的东西。不完美/优化,但应该能胜任。

    final int min = 0;
    final int max = 9;
    final String inputString= "testingThisString";
    String str = "";
    final Random random = new Random();
    for(final char c: inputString.toCharArray())
        final int randomNumber = random.nextInt(max - min) + min;
        str += c + "" + String.valueOf(randomNumber);
    
    System.out.println(str);

【讨论】:

这个!清晰明了【参考方案3】:

Stream 在这种情况下可能有用:

final Random rand = new Random();
String str = "string";
str = Stream.of(str.split("")).map(
             x -> x + Integer.valueOf(rand.nextInt(10))
      ).collect(Collectors.joining());
System.out.println(str); // s8t9r6i0n1g6

我们在字符串中得到一个单独的字母流,并为每个字符串添加一个随机数。最后,我们将所有内容连接在一起以获得最终字符串。

一个小更新。由于 java-8 String 类具有返回字符流的 chars 方法。所以我们可以直接使用它而不用拆分原始字符串。例如:

Random rand = new Random();
String str = "string";
str = str.chars().mapToObj(
          c -> String.valueOf((char)c) + rand.nextInt(10)
      ).collect(Collectors.joining());
System.out.println(str); // s5t7r8i4n3g1 

【讨论】:

以上是关于在单词的每个字母之间插入一个数字的主要内容,如果未能解决你的问题,请参考以下文章

在数字和字符之间插入一个空格

在货币格式文本中的数字和字母之间插入空格[关闭]

Python regex如何在字母和数字之间插入连字符;并删除两个字母之间的连字符

切换语句将单词转换为数字? C ++

标识符与关键字

带有字母、数字、任意顺序的可选特殊字符的正则表达式单词