替换字符串中的单词

时间:2013-05-25 07:29:53

标签: java string replace state

我有一个开/关按钮,我想更改字符串的值,如果字符串包含randomnessOn,它将更改为randomnessOff,反之亦然。我不能只重写String,因为它不仅包含开/关按钮状态的值。我试过这段代码。

if(command.equals(randFor) | command.equals(randBack) | command.equals(randButton)){
        if(option.contains("randomnessOf")){
            randomness = true;
            randState = "ON";
            randStateX = 975;
            randStateY = 245;
            option = option.replace("randomnesOff", "randomnessOn");
        }
        if(option.contains("randomnessOn")){
            randomness = false;
            randState = "OFF";
            randStateX = 970;
            randStateY = 245;
            option = option.replace("randomnesOn", "randomnessOff");
        }
        loadOptions();
    }

它将更改randState字符串的文本并更改文本的位置,但它不会替换option字符串中的单词,那么如何替换字符串中的单词呢?

3 个答案:

答案 0 :(得分:3)

  

它将更改randState String的文本并更改文本的位置,但它不会替换选项String中的单词,那么我该如何替换String中的单词呢?

Java字符串是不可变的。你无法改变它们。

这一行:

    option = option.replace("randomnesOn", "randomnessOff");

正在创建一个基于option原始值的新String,并替换相关字符。您现在必须使用此新字符串来更新GUI。例如,您可能需要在某些Swing按钮或标签对象上调用setText(option)

请记住,为option分配新值只会影响该局部变量。它当然不会也不会影响你的GUI ...除非你做某事来实现这一点。

答案 1 :(得分:1)

您可以通过名为“option”的变量更改值引用。 可能,您有一些GUI元素(例如JButton)将其“Text”设置为原始值option。如果您需要更新视觉元素(例如JButton),则必须明确地进行更新,例如:调用myButton.setText(option)(将新值分配给变量option后)。

答案 2 :(得分:0)

    if(option.contains("randomnessOf")){
               //....
                option = option.replace("randomnessOff", "randomnessOn");// 
              //randomnessOf with two `s`
            }
            if(option.contains("randomnessOn")){
               //....
                option = option.replace("randomnessOn", "randomnessOff");
               //the same as firtst you forgot one 's'
}