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

问题描述

我正在从事一些anroid工作室项目。我有问题。

我有一个名为result_stack的堆栈。 -> result_stack = [K,T,E,J,O,S,O,G,O,J]

我试图将此堆栈转换为字符串-> String final_result = String.valueOf(result_stack);

现在,当我尝试打印final_result-> System.out.println(final_result);->它会显示[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]作为输出。请帮助我。

解决方法

您仍然看到旧值的原因是因为Strings是不可变的(一旦创建,就不会更改。)

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

像这样:final_result = final_result.replaceAll(",","");

p.s。您也需要替换空格和方括号,但要弄清楚:)

,

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

Stack<String> result_stack = new Stack<>();
result_stack.addAll(Arrays.asList("K","T","E","J","O","S","G","J"));

// The wrong way,don't do this
String final_result1 = String.valueOf(result_stack);
System.out.println(final_result1);

// The correct way (Java 8+)
String final_result2 = result_stack.stream().collect(Collectors.joining());
System.out.println(final_result2);

// The correct way (Java 1.5+)
StringBuilder buf = new StringBuilder();
for (String value : result_stack)
    buf.append(value);
String final_result3 = buf.toString();
System.out.println(final_result3);

输出

[K,T,E,J,O,S,G,J]
KTEJOSOGOJ
KTEJOSOGOJ
,

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

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

我是用数组而不是堆栈来完成的,但是如果在将堆栈转换为字符串时得到方括号和逗号,则同样的想法适用,您只需要对replace()进行一些调用:

import java.util.*;
public class MyClass {
    public static void main(String args[]) {
      String[] array = {"K","J"};
      System.out.println(Arrays.toString(array).replace(","").replace("[","").replace("]","").replace(" ",""));
    }
}

这将打印以下内容:KTEJOSOGOJ

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

,
String HomeName = "[K,J]";
String Replace = HomeName.replaceAll("[^a-zA-Z0-9\\\\s+]","");
UserName.setText(Replace);

输出

KTEJOSOGOJ