我有以下代码来反转字符串,我正在考虑为它制作测试用例。我想知道如何处理用户输入" \ n"," \ t" ?
private static String reverse2(String str) {
if (str == null || str.length() == 0)
return str;
int start = 0;
int end = str.length() - 1;
char[] chars = str.toCharArray();
while (start < end) {
char tmp = chars[start];
chars[start] = chars[end];
chars[end] = tmp;
start++;
end--;
}
return String.valueOf(chars);
}
答案 0 :(得分:4)
StringBuilder str = new StringBuilder("Java");
// reverse characters of the StringBuilder and prints it
System.out.println("reverse = " + str.reverse());
答案 1 :(得分:4)
在&#34; \ nxyz&#34;等字符串中,str.toCharArray()处理&#34; \ n&#34;作为一个单一的角色。您的代码中没有问题。新行char的唯一的地方会改变,这次会以不同的行格式打印。
答案 2 :(得分:3)
为什么不使用StringBuilder来反转它:
string input = "xyz\t\nabc123";
string reversed = new StringBuilder(input).reverse().toString();
答案 3 :(得分:2)
你的问题含糊不清,答案不是那么简单。
如果您所谓的用户输入是一个Java文字字符串,如"newline -\n-"
,则序列\n
将变为单个换行符。打印字符串时,您再也看不到\n
。相反,进一步的输出转到下一行,给出
newline -
-
(11个字符)。逆转给出了
-
- enilwen
相反,如果用户输入来自键盘,则无法识别转义并且打印将输出不变的字符串。
newline -\n-
(12个字符)。逆转给出了
-n\- enilwen
如果您希望识别和翻译转义符,则需要通过检查每个输入字符来自行完成。
在最奇怪的情况下,您可以在反转后恢复转义(以便它们再次可见),给出转换
newline -\n-
(12个字符)然后在内部,
newline -
-
(11个字符)然后内部颠倒,
-
- enilwen
(11个字符)然后外部
-\n- enilwen
(12个字符)。请注意上述n\
与\n
的区别。