在Java Android Studio中从堆栈或字符串中删除逗号和方括号

在Java Android Studio中从堆栈或字符串中删除逗号和方括号,java,android,string,android-studio,stack,Java,Android,String,Android Studio,Stack,我正在做一些anroid工作室的项目。我有个问题 我有一个名为result\u stack的堆栈。->结果_堆栈=[K,T,E,J,O,S,O,G,O,J] 我试图将此堆栈转换为string->string final\u result=string.valueOf(result\u stack) 现在,当我尝试打印最终结果->System.out.println(最终结果)->它打印[K,T,E,J,O,S,O,G,O,J] 但我想去掉所有逗号、方括号和空格。我的意思是,我想像这样打印“KTE

我正在做一些anroid工作室的项目。我有个问题

我有一个名为result\u stack的堆栈。->结果_堆栈=[K,T,E,J,O,S,O,G,O,J]

我试图将此堆栈转换为string->
string final\u result=string.valueOf(result\u stack)

现在,当我尝试打印最终结果->
System.out.println(最终结果)->它打印[K,T,E,J,O,S,O,G,O,J]

但我想去掉所有逗号、方括号和空格。我的意思是,我想像这样打印“KTEJOSOGOJ”,然后将其设置为文本视图

我尝试过这个,但没有任何改变:

final_result.replaceAll(",", "");
System.out.println(final_result);

我仍然得到[K,T,E,J,O,S,O,G,O,J]作为输出。请帮我解决这个问题。

您仍然看到旧值的原因是
字符串是不可变的(一旦创建,它们就不会更改)

解决方案是将
final_result
变量设置为
replaceAll
方法调用的结果。奇怪,我知道

如下所示:
final\u result=final\u result.replaceAll(“,”,”)


p、 您还需要替换空格和括号,但您会发现:)

您仍然看到旧值的原因是字符串是不可变的(一旦创建了字符串,它们就不会更改)

解决方案是将
final_result
变量设置为
replaceAll
方法调用的结果。奇怪,我知道

如下所示:
final\u result=final\u result.replaceAll(“,”,”)


p、 您还需要替换空格和括号,但您会发现:)

使用正则表达式删除除字母以外的所有符号

String final_result = String.valueOf(result_stack).replaceAll("[^a-zA-Z]", "");

使用正则表达式删除除字母以外的所有符号

String final_result = String.valueOf(result_stack).replaceAll("[^a-zA-Z]", "");

我是用数组而不是堆栈实现的,但是如果在将堆栈转换为字符串时得到方括号和逗号,同样的想法也适用,只需要调用
replace()

这将打印以下内容:KTEJOSOGOJ


同样,您可以通过调用
substring()
而不是调用那么多
replace()
来实现同样的效果。请记住,字符串在Java中是不可变的,因此您需要分配对String类型的对象调用的方法的结果,除非您像我一样将它们链接为另一个方法的输入。

我是使用数组而不是堆栈来实现的,但是如果您在将堆栈转换为字符串时得到方括号和逗号,同样的想法也适用,您只需要调用
replace()

String HomeName = "[K, T, E, J, O, S, O, G, O, J]";
String Replace = HomeName.replaceAll("[^a-zA-Z0-9\\\\s+]","");
UserName.setText(Replace);
这将打印以下内容:KTEJOSOGOJ

同样,您可以通过调用
substring()
而不是调用那么多
replace()
来实现同样的效果。请记住,字符串在Java中是不可变的,因此您需要分配对String类型的对象调用的方法的结果,除非您像我一样将它们链接为另一个方法的输入

String HomeName = "[K, T, E, J, O, S, O, G, O, J]";
String Replace = HomeName.replaceAll("[^a-zA-Z0-9\\\\s+]","");
UserName.setText(Replace);
输出

KTEJOSOGOJ
输出

KTEJOSOGOJ

不要调用
String.valueOf(result\u stack)
result\u stack.toString()
,并尝试“修复”结果。而是正确构建字符串

Stack result_Stack=new Stack();
结果_stack.addAll(数组.asList(“K”、“T”、“E”、“J”、“O”、“S”、“O”、“G”、“O”、“J”));
//错误的方法,不要这样做
String final\u result1=String.valueOf(result\u stack);
系统输出打印LN(最终结果1);
//正确的方法(Java 8+)
字符串final_result2=result_stack.stream().collect(collector.joining());
系统输出打印LN(最终结果2);
//正确的方法(Java 1.5+)
StringBuilder buf=新的StringBuilder();
for(字符串值:结果\堆栈)
追加(价值);
字符串final_result3=buf.toString();
系统输出打印LN(最终结果3);
输出

KTEJOSOGOJ
[K,T,E,J,O,S,O,G,O,J]
克特约索戈吉
克特约索戈吉

不要调用
String.valueOf(result\u stack)
result\u stack.toString()
,并尝试“修复”结果。而是正确构建字符串

Stack result_Stack=new Stack();
结果_stack.addAll(数组.asList(“K”、“T”、“E”、“J”、“O”、“S”、“O”、“G”、“O”、“J”));
//错误的方法,不要这样做
String final\u result1=String.valueOf(result\u stack);
系统输出打印LN(最终结果1);
//正确的方法(Java 8+)
字符串final_result2=result_stack.stream().collect(collector.joining());
系统输出打印LN(最终结果2);
//正确的方法(Java 1.5+)
StringBuilder buf=新的StringBuilder();
for(字符串值:结果\堆栈)
追加(价值);
字符串final_result3=buf.toString();
系统输出打印LN(最终结果3);
输出

KTEJOSOGOJ
[K,T,E,J,O,S,O,G,O,J]
克特约索戈吉
克特约索戈吉

您没有将字符串设置回最终结果。需要执行
final\u result=final\u result.replaceAll(“,”,”)
结果堆栈的
变量类型是什么?如果它是一种支持
steram()
元素的类型,您只需调用
String result=result\u stack.stream().collect(Collectors.joining())
在没有
[
]
的情况下获取结果。您没有将字符串设置回最终结果。需要执行
final\u result=final\u result.replaceAll(“,”,”)
结果堆栈的
变量类型是什么?如果它是一种支持
steram()
元素的类型,您只需调用
String result=result\u stack.stream().collect(Collectors.joining())[
]
即可获得结果。谢谢!这是最简单的方法!!!不客气地说:我会考虑一下其他的答案,因为人们已经提出了一些关于你应该如何处理这个问题的有效的观点。我只做了最简单的回答,他们已经做了更详细的解释,并解释了一些更可靠的方法。谢谢!这是最简单的方法!!!不客气:我会考虑