input:有一天
String[] words = sb.toString().split("//s");
StringBuilder sbFinal = new StringBuilder();
for(int i=0;i<words[0].length() ;i++){
for(int j=0;j<words.length;j++){
sbFinal.append(words[j].charAt(i));
}
}
return sbFinal.toString() ;
输出:生日
我有许多字符串,我需要将其转换为打印一组新字符串(用空格分隔)的形式,这些字符串由给定的每个字符串的各个字符组成。
所需的输出:hae和通过ecy
例如,我们有3个单词,每个单词4个字符,我们想要4个单词,每个单词3个字符。
有anic eday =>有并且通过ecy
我们从所有3个单词中选择第一个字符,以制成新的第一个单词。
我使用了上面显示的代码,但是它将输入本身打印为输出。
答案 0 :(得分:2)
使用简单的for
循环和一个数组:
public class SO {
public static void main(String args[]) {
String input = "have anic eday ";
// Split the input.
String[] words = input.split("\\s");
int numberOfWords = words.length;
int wordLength = words[0].length();
// Prepare the result;
String[] result = new String[wordLength];
// Loop over the new words.
for (int i = 0; i < wordLength; i++) {
// Loop over the characters in each new word.
for (int j = 0; j < numberOfWords; j++) {
// Initialize the new word, if necessary.
String word = result[i] != null ? result[i] : "";
// Append the next character to the new word.
String newChar = Character.toString(words[j].charAt(i));
result[i] = word + newChar;
}
}
for (String newWord : result) {
System.out.println(newWord);
}
}
}
输出:
hae
and
via
ecy
答案 1 :(得分:1)
尽管回答了,但我用最初的sysout而不是return组成了一个与您最初设计的版本更相似的版本,但是更改了您的需求,或者只是调整了.split()行:
String sb = "have anic eday";
String[] words = sb.split("\\s"); //you need to use BACKWARDSLASH "\\s" to get it to work.
StringBuilder sbFinal = new StringBuilder();
for (int i = 0; i < words[0].length(); i++) {
for (int j = 0; j < words.length; j++) {
sbFinal.append(words[j].charAt(i));
}
sbFinal.append(" ");
}
System.out.println(sbFinal.toString());
您用“ // s”分割,但是“”或“ \\ s”似乎工作得很好。