mSwitch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mSwitch.getText().equals("Everybody")) {
PRIVACY = PRIVACY.replace(PRIVACY.substring(0, 1), "E");
Log.d("TEXT", PRIVACY);
} else if (mSwitch.getText().equals("Nobody")) {
PRIVACY = PRIVACY.replace(PRIVACY.substring(0, 1), "N");
Log.d("TEXT", PRIVACY);
}
}
});
隐私字符串=“ E / E / N / N / E ........ / N
我有多个用于更改每个字符的按钮
这只是一个随机字符,用“ /”分隔
因此,单击切换按钮时,我想用E或N替换其中一个字符,但是上面的代码我替换了所有类似结果的结果,要么是E / E / E / E / E ...或N / N / N / N / N ...
我哪里出错了?
答案 0 :(得分:2)
此行:
PRIVACY = PRIVACY.replace(PRIVACY.substring(0, 1), "E")
正在PRIVACY
内部用“ E”替换每次出现的第一个字符,
因为replace()
方法的第一个参数是要查找的字符串。
这样做:
mSwitch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mSwitch.getText().equals("Everybody")) {
PRIVACY = "E" + PRIVACY.substring(1);
Log.d("TEXT", PRIVACY);
} else if (mSwitch.getText().equals("Nobody")) {
PRIVACY = "N" + PRIVACY.substring(1);
Log.d("TEXT", PRIVACY);
}
}
});
PRIVACY.substring(1)
是PRIVACY的一部分,从第二个字符开始直至其结束。
编辑
如果要用“ A”代替第5个字符:
PRIVACY = PRIVACY.substring(0, 5) + "A" + PRIVACY.substring(6);
查看更多substring()
答案 1 :(得分:1)
有多个选项可以在一个位置替换一个字符。其中之一是使用stringbuilder。
示例:
mSwitch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mSwitch.getText().equals("Everybody")) {
StringBuilder stringBuilder = new StringBuilder(PRIVACY[0]);
stringbuilder.setCharAt(0, 'N'); //you can also use "N".charAt(0) instead of 'N'
Log.d("TEXT", stringbuilder.toString());
} else if (mSwitch.getText().equals("Nobody")) {
StringBuilder stringBuilder = new StringBuilder(PRIVACY[0]);
stringbuilder.setCharAt(0, 'E'); //you can also use "E".charAt(0) instead of 'E'
Log.d("TEXT", stringbuilder.toString());
}
}
});