Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 从字符串中删除项_Java_Android_String - Fatal编程技术网

Java 从字符串中删除项

Java 从字符串中删除项,java,android,string,Java,Android,String,我试图替换字符串中出现的所有子字符串 我想将“\t\t\t”替换为” 我想将“\t\t\t\t\t\t”替换为” 我想将“\t\t\t\t”替换为“” 我正在使用 s = s.replace("\t\t\t\t", "< >"); s = s.replace("\t\t\t", "<3tabs>"); s = s.replace("\t\t\t\t\t\t", "<6tabs>"); s=s.replace(“\t\t\t\t”,“”; s=s.rep

我试图替换字符串中出现的所有子字符串

我想将
“\t\t\t”
替换为

我想将
“\t\t\t\t\t\t”
替换为

我想将
“\t\t\t\t”
替换为
“<>”

我正在使用

s = s.replace("\t\t\t\t", "<    >");
s = s.replace("\t\t\t", "<3tabs>");
s = s.replace("\t\t\t\t\t\t", "<6tabs>");
s=s.replace(“\t\t\t\t”,“<>”;
s=s.replace(“\t\t\t”和“”);
s=s.replace(“\t\t\t\t\t”,”);
但是没有用,它不能代替任何东西,于是我试着用了

s = s.replaceAll("\t\t\t\t", "<    >");
s = s.replaceAll("\t\t\t", "<3tabs>");
s = s.replaceAll("\t\t\t\t\t\t", "<6tabs>");
s=s.replaceAll(“\t\t\t\t”,“<>”;
s=s.replaceAll(“\t\t\t”和“”);
s=s.replaceAll(“\t\t\t\t\t”,”);
再说一次,没有用,它不能代替任何东西。在尝试了这两种方法之后,我尝试了
StringBuilder


我可以通过
StringBuilder
替换项目,我的问题是,为什么我不能通过上述两个命令中的String直接替换项目?有什么方法可以直接替换字符串中的项目吗?

6tabs永远不会找到匹配项,因为支票已经用两个3tabs替换了它们

你需要先从最大的比赛开始

字符串是不可变的,所以您不能直接修改它们,s.replace()返回一个包含修改的新字符串。然后将其分配回s,这样它就可以正常工作了

将事情按正确的顺序进行,并使用调试器逐步完成,以查看发生了什么。

查看

遍历文本,将其划分为char[]数组,然后使用for循环遍历各个字符。 不要直接打印出来,而是使用%x标记(或%d,如果您喜欢十进制数字)打印出来

获取ASCII表并查找所有字符的数字,然后查看是否有\n或\f或\r。在之前或之后这样做

不同的操作系统使用不同的行终止字符;这是我从谷歌找到的第一个关于“line terminator Linux Windows”的参考资料。它说Windows使用\r\f和Linux\f。你应该从你的例子中发现这一点。显然,如果您剥去\n并离开\r,文本仍会分成单独的行

如果您编写一个包含空格和行终止符的正则表达式(请参阅Java教程的这一部分等),并将其用作String.split()方法的分隔符,然后按顺序打印各个标记,则可能会更成功。

请按此顺序尝试

String s = "This\t\t\t\t\t\tis\t\t\texample\t\t\t\t";
s = s.replace("\t\t\t\t\t\t", "<6tabs>");
s = s.replace("\t\t\t\t", "<    >");
s = s.replace("\t\t\t", "<3tabs>");
System.out.print(s);
String s=“This\t\t\t\t\t\tis\t\t\t\t示例\t\t\t\t”;
s=s.replace(“\t\t\t\t\t”,”);
s=s.replace(“\t\t\t\t”和“<>”;
s=s.replace(“\t\t\t”和“”);
系统输出打印;
输出:

This<6tabs>is<3tabs>example<    >
Thisisexample<>

我在代码中以正确的顺序使用它,将较大的制表符替换为较小的制表符,然后替换为最小的制表符,我尝试调试它,但字符串s的值保持不变为什么不
\t\t\t\t
在to中
This<6tabs>is<3tabs>example<    >