在单词的每个字母之间插入一个数字
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
【讨论】:
以上是关于在单词的每个字母之间插入一个数字的主要内容,如果未能解决你的问题,请参考以下文章