有人可以给你一个如何在你加扰字母之前拆分字符串的例子
我可以加扰这些词,但它也改变了词的长度
示例:
输入:您好,我的名字是Jon
输出:e imanoJs my nlolHe
但它应该是这样的
输入:您好,我的名字是Jon
输出:Hlelo my nmae是Jon
所以第一封和最后一封信应该留在原地
这是我到目前为止的代码
public class MixUp{
public static void main(String[] args){
String cards="Hello my Name is Jon, nice to meet you";
System.out.println("Input String = " + cards);
cards = shuffle(cards);
System.out.println("Shuffled String = " + cards);
}
static String shuffle(String cards){
if (cards.length()<=1)
return cards;
int split=cards.length()/2;
String temp1=shuffle(cards.substring(0,split));
String temp2=shuffle(cards.substring(split));
if (Math.random() > 0.5)
return temp1 + temp2;
else
return temp2 + temp1;
}
}
答案 0 :(得分:1)
inputString.split(" ")
将拆分空格并返回一个字符串数组。创建一个新数组,遍历第一个拆分数组并随机播放每个字符串,并将混洗后的字符串添加到新数组中。
String cards="Hello my Name is Jon, nice to meet you";
System.out.println("Input String = " + cards);
String[] splt = cards.split(" ");
String[] shuffled = new String[splt.length];
for (int iter = 0; iter < splt.length; iter ++){
shuffled[iter] = shuffle(splt[iter]);
}
// Now join the array
编辑更好的是使用StringBuilder
String cards="Hello my Name is Jon, nice to meet you";
System.out.println("Input String = " + cards);
String[] splt = cards.split(" ");
StringBuilder sb = new StringBuilder();
for (int iter = 0; iter < shuffled.length; iter ++){
sb.append(shuffle(splt[iter]) + " ");
}
String shuffled = sb.toString();
答案 1 :(得分:0)
你应该将句子分成单词,然后加扰单词:
String[] words = sentence.split(" ");
for(String word : words)
word = shuffle(word);
然后把这个词连在一起写成一个句子。
答案 2 :(得分:0)
注释
代码
private static String shuffle(String sentence) {
String[] words = sentence.split("\\s+");
StringBuilder builder = new StringBuilder();
for (String word : words) {
List<Character> letters = new ArrayList<Character>();
for (char letter : word.toCharArray()) {
letters.add(letter);
}
if (letters.size() > 2) {
Collections.shuffle(letters.subList(1, letters.size() - 1));
}
for (char letter : letters) {
builder.append(letter);
}
builder.append(" ");
}
return builder.toString();
}