![](/img/trans.png)
[英]Escape semi colon in "CREATE OR REPLACE AND COMPILE JAVA" statement
[英]Replace semi colon (;) character in java
我正在尝试使用此方法从字符串的两端截断半冒号:
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;
}
但这只是从一开始就被截断了。
问题是什么??
您的代码是正确的
此代码仅删除第一个“;” 最后一个“;” 是对的?
如果最后一个“;”不能删除 下一个空格有ex(“;”)
如果你不想忽略空间
使用trim()方法
您的代码工作正常,只需执行一个简单的步骤即可:
String outputString=inputString.trim();
您的密码是正确的! 之后您可能会得到空白;
在你的字符串中
为了避免使用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);
}
删除分号';'的更好方法 从您的字符串是使用String.replaceAll() 。
字符串替换的字符串= inputString.replaceAll(“ ^; | $;”,“”);
试试这行可能会让你开心
String outputString=inputString.replace(";","");
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);
}
您的代码已正确运行。 仅执行一次子字符串将使函数更有效。
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);
}
}
实现此目的的多种方法
String yourDesiredText= anytext.replaceAll(";$", "");
OR
yourDesiredText= yourDesiredText.replaceAll(";$", "");
OR
if (yourDesiredText.endsWith(";")) {
yourDesiredText= yourDesiredText.substring(0, yourDesiredText.length() - 1);
}
字符串是不可变的。 这意味着您无法更改它们。
因此,您必须重新分配文本或将其设置为新变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.