Java:尽管字符串不变,但如何"改变"字符串?

A.G*_*.G. 3 java string

我正在开发一个API作为一个学生的爱好项目,我正在使用一个网址,可以添加/减少不同的选项来更改收到的信息.我知道字符串是不可变的,这使得整齐地解决问题变得有些困难.我想出了一些混乱的方法,没有一个很强大,解决它,我想知道是否有一个标准的方法.我计划让单选按钮(未分配给一个按钮组;想要所有排列),这将允许我"包含","添加"和"排除"选项.

因此,这里是z?s=GOOG&t=7m&z=l&q=l&p=e50,m50&a=ss,sfs,vm,w14用于与YahooFinance API交互的字符串.所以,假设我有一些像这样的变量:

 String options="z?s=GOOG&t=7m&z=l&q=l&p=e50,m50&a=ss,sfs,vm,w14"
Run Code Online (Sandbox Code Playgroud)

现在,考虑一下所说的部分p=e50,m50.假设我有三个单选按钮50,100,200我想剔开/关,使得我有一个字符串p=e50,m50,e100,m100,e200,m200与所有的按钮,和每一个可能的其他组合; 即100关闭,它看起来像:p=e50,m50,e200,m200.

有什么想法吗?我最终也会对其他值(ss,sfs等等)做同样的事情,但是,让我们从移动平均线开始.

ste*_*ade 8

使用StringBuilderinsert方法.

Java文档页面


Dav*_*vid 6

字符串只是不可变的,因为在JVM中创建字符串后,无法更改字符串的特定实例的内容.也就是说,这并不意味着您无法动态构建符合您需求的字符串.您可以使用简单的连接并执行类似...

String options="z?s=GOOG&t=7m&z=l&q=l&p=" + eOption + ",m50&a=ss,sfs,vm,w14";
Run Code Online (Sandbox Code Playgroud)

从技术上讲,这会创建三个String实例,并使用StringBuffer将它们全部附加在一起.您可以自己使用StringBuffer API并在要添加选项的位置调用.append().