用0,1代替“”替换字符串的一部分

时间:2019-01-05 07:54:24

标签: java android string replace substring

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

我哪里出错了?

2 个答案:

答案 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());
        }
    }
});