Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何处理特殊字符,如“quot\";反串?_Java_String_Algorithm - Fatal编程技术网

Java 如何处理特殊字符,如“quot\";反串?

Java 如何处理特殊字符,如“quot\";反串?,java,string,algorithm,Java,String,Algorithm,我有以下代码来反转字符串,我正在考虑为它制作测试用例。我想知道如何处理用户输入“\n”、“t”等情况 私有静态字符串反转2(字符串str){ 如果(str==null | | str.length()==0) 返回str; int start=0; int end=str.length()-1; char[]chars=str.toCharArray(); while(开始

我有以下代码来反转字符串,我正在考虑为它制作测试用例。我想知道如何处理用户输入“\n”、“t”等情况

私有静态字符串反转2(字符串str){
如果(str==null | | str.length()==0)
返回str;
int start=0;
int end=str.length()-1;
char[]chars=str.toCharArray();
while(开始<结束){
char tmp=chars[start];
字符[开始]=字符[结束];
字符[结束]=tmp;
启动++;
结束--;
}
返回字符串.valueOf(字符);
}

为什么不使用StringBuilder将其反转:

string input = "xyz\t\nabc123";
string reversed = new StringBuilder(input).reverse().toString();

在像“\nxyz”这样的字符串中,str.toCharArray()将“\n”视为单个字符。您的代码中没有问题。只有新行字符的位置会改变,这次会以不同的行格式打印。

你的问题模棱两可,答案也不那么简单

如果您称之为用户输入的是Java文本字符串,如
“换行符-\n-”
,则序列
\n
将转换为单个换行符。打印字符串时,将不再看到
\n
。相反,进一步的输出进入下一行,给出

newline -
-
(11个字符)。逆转

-
- enilwen
-n\- enilwen
相反,如果用户输入来自键盘,转义将无法识别,打印输出的字符串将保持不变

newline -\n-
(12个字符)。逆转

-
- enilwen
-n\- enilwen
如果您想识别和翻译转义符,您需要自己检查每个输入字符

在最奇怪的情况下,您可以在反转后恢复转义(以便它们再次可见),并提供转换

newline -\n-
(12个字符)然后在内部

newline -
-
(11个字符),然后内部反转

-
- enilwen
(11个字符)然后

-\n- enilwen

(12个字符)。请注意上面的
n\
\n

StringBuilder有一个相反的方法()!只要使用它,
\n
\t
在尝试反转字符串时有什么问题?(它们被视为单个字符,因此如果你担心的话,它们不会以'n'结尾)