0


I am trying to truncate semi colon from both the ends of a string using this method:

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;
}

But this truncates from beginning only.
What is the problem??

4

8 回答 8

2

你的代码是正确的

此代码仅删除第一个“;” 最后一个“;” 是正确的?

如果最后一个“;”则无法删除 下一个空格(“;”)

如果你不想忽略空间

使用 trim() 方法

于 2013-08-30T04:50:01.897 回答
2

您的代码运行良好,您只需执行一个简单的步骤:

String outputString=inputString.trim();
于 2013-08-30T05:13:27.310 回答
1

您的代码是正确的!;您的字符串后可能会出现空格

避免这种使用trim()

对于这种情况,试试

if (outputString.trim().endsWith(";")) {
    outputString = outputString.substring(0,(outputString.trim().length() - 1));
    Log.i(TAG, "*************O U T P U T   T O  T R U N C A T E ************* "+outputString);
}
于 2013-08-30T04:40:44.517 回答
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);
    }
}
于 2013-08-30T04:59:14.847 回答
0

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

字符串替换字符串 = inputString.replaceAll("^;|$;","");

于 2013-08-30T04:29:57.377 回答
0

试试这条单线可能会让你开心

String outputString=inputString.replace(";","");
于 2013-08-30T04:30:29.230 回答
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);
    }
于 2013-08-30T04:32:10.537 回答
0

实现这一目标的多种方法

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

OR

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

OR

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

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

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

于 2015-04-22T13:00:50.213 回答