【问题标题】:Replace part of a string using 0,1 instead of " "使用 0,1 而不是 " " 替换字符串的一部分
【发布时间】:2019-05-31 16:23:00
【问题描述】:
    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...

我哪里出错了?

【问题讨论】:

    标签: java android string replace substring


    【解决方案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());
            }
        }
    });
    

    【讨论】:

    • setCharAt 在我使用 tostring 方法时不接受字符串值
    【解决方案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()

    【讨论】:

    • 我想替换一个中间字符怎么办?
    猜你喜欢
    • 2014-05-31
    • 1970-01-01
    • 2022-07-18
    • 1970-01-01
    • 2011-09-22
    • 2012-05-18
    • 2017-09-19
    • 1970-01-01
    相关资源
    最近更新 更多