替换java中的半冒号(;)字符

时间:2013-08-30 04:26:26

标签: java android


我试图使用这种方法从字符串的两端截断半冒号:

private String truncateSemicolon(String inputString){
    String outputString=inputString;
    boolean isTruncated = false;
    Log.i(TAG, "*************I N P U T   T O  T R U N C A T E ************* "+outputString);
    while(!isTruncated){
        if(outputString.startsWith(";")){

            outputString=outputString.substring(1,outputString.length());
            Log.i(TAG, "START *************************************"+outputString);
        }
        if(outputString.endsWith(";")){

            outputString=outputString.substring(0,(outputString.length()-1));
            Log.i(TAG, "************************************* END"+outputString);
        }
        if(!outputString.endsWith(";") && !outputString.startsWith(";")){
            isTruncated=true;
        }
    }       
    Log.i(TAG, "*************O U T P U T   T O  T R U N C A T E ************* "+outputString);
    return outputString;
}

但这只是从头开始截断。
问题是什么?

8 个答案:

答案 0 :(得分:2)

你的代码是对的

此代码仅首先删除“;”最后“;”是对吗?

如果最后“;”则无法移除前面有空格(“;”)

如果你不想忽视空间

使用trim()方法

答案 1 :(得分:2)

您的代码工作正常,您只需按照一个简单的步骤:

String outputString=inputString.trim();

答案 2 :(得分:1)

您的代码是正确的!您的字符串{/ 1}}后可能会出现空格

避免使用;

对于那种情况,请尝试

trim()

答案 3 :(得分:0)

更好的方法来删除分号''从你的字符串中使用 String.replaceAll()

String replacementString = inputString.replaceAll(" ^; | $;","");

答案 4 :(得分:0)

尝试这一行可能会让您满意

String outputString=inputString.replace(";","");

答案 5 :(得分:0)

    if(outputString.startsWith(";")){

        outputString=outputString.substring(1,outputString.length());
        Log.i(TAG, "START *************************************"+outputString);
    }
    if(outputString.endsWith(";")){

        outputString=outputString.substring(0,(outputString.length()-1));
        Log.i(TAG, "************************************* END"+outputString);
    }

对于public String substring(int beginIndex, int endIndex),beginIndex是起始索引(包括端点),endIndex是结束索引,不包括。

所以将outputString=outputString.substring(1,(outputString.length()));更改为 outputString=outputString.substring(1,(outputString.length() - 1));

同样改变第二个if语句

outputString=outputString.substring(0,(outputString.length()-1));

outputString=outputString.substring(0,(outputString.length()-2));

所以你的代码应该是

    if(outputString.startsWith(";")){

        outputString=outputString.substring(1,outputString.length()-1);
        Log.i(TAG, "START *************************************"+outputString);
    }
    if(outputString.endsWith(";")){

        outputString=outputString.substring(0,(outputString.length()-2));
        Log.i(TAG, "************************************* END"+outputString);
    }

答案 6 :(得分:0)

您的代码已正常运行。仅执行一次子串将使该功能更有效。

private String truncateSemicolon(final String inputString) {
    int startPos = inputString.startsWith(";") ? 1 : 0;
    if(inputString.endsWith(";")) {
        return inputString.substring(startPos, inputString.length() - 1);
    } else {
        return startPos == 0 ? inputString : inputString.substring(startPos);
    }
}

答案 7 :(得分:0)

实现此目的的多种方法

String yourDesiredText= anytext.replaceAll(";$", "");

OR

yourDesiredText= yourDesiredText.replaceAll(";$", "");

OR

if (yourDesiredText.endsWith(";")) {
    yourDesiredText= yourDesiredText.substring(0, yourDesiredText.length() - 1);
}
  

字符串是不可变的。这意味着你无法改变它们。

     

因此,您必须重新指定文本或将其设置为新变量。