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< >