我很想解决这个问题,希望能得到一些反馈。
我目前正在尝试将一个字符串逐行旋转到右侧(输入来自文件)。输入可能有很多行,因此需要每行进行一次旋转。 例如,将其向右旋转5 “和换行符^ $ @” 最终将是:“ ^ $ @和换行符”
现在输入我的代码: 我正在使用一个List并已完成以下操作(请原谅随机打印行,正在调试旧方法:]):
private static List<String> rflag(String value, List<String> lines) {
List<String> newLines = new ArrayList<>();
int rvalue = Integer.parseInt(value);
for (String line : lines) {
StringBuilder sb = new StringBuilder();
if (!line.isEmpty()) {
List <Character> chars= new ArrayList<>();
for(char ch: line.toCharArray()){
chars.add(ch);
}
Collections.rotate(chars, rvalue);
sb.append(chars);
// System.out.println("sb" + sb);
String text = sb.toString()
.replace(",", "") //remove the commas
.replace("[", "") //remove the right bracket
.replace("]", "") //remove the left bracket
.trim();
newLines.equals(text);
//System.out.println("nl" + newLines); //taking a look at output
//System.out.println("t-" + text); //taking a look at output
}
}
return newLines;
}
如果我输入类似“ abcXYZ”的内容,那么我的输出最终将是[b,c,X,Y,Z,a]或bcXYZa,并且删除了方括号和逗号。
我的主要问题是,尽管我可以删除方括号和逗号,但是我并没有保留输入中的行或单词。有人可以向我提出一些想法(或替代方法)吗?我觉得我可能想得太多了,但是我花了很多时间,变得沮丧:\
非常感谢。
答案 0 :(得分:0)
更改
`.replace(",", "") //remove the commas`
到
`.replace(", ", "") //remove the commas`
使此代码按预期工作。
`System.out.println(rflag("2", Arrays.asList("and line breaks")));//output: ksand line brea`
(“和换行符^ $ @”,当前输出为“ ^ $ @ a n d l i n e b r e a k s”,但应为“ ^ $ @和换行符”。)