我试图使用这种方法从字符串的两端截断半冒号:
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;
}
但这只是从头开始截断。
问题是什么?
答案 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);
}
字符串是不可变的。这意味着你无法改变它们。
因此,您必须重新指定文本或将其设置为新变量。