我正在尝试在处理中复制String.trim()函数。我知道String.trim()函数会删除制表符“ \ t”,换行符“ \ n”以及字符串开头和结尾的空格。现在,我正在做的操作将删除字符串中的所有空格,制表符和换行符。如何使其仅在字符串的开头和结尾处删除空格,制表符和换行符。
String myStringTrim(String str){
String returnString = "";
for (int i = 0; i < str.length(); i++) {
if(str(str.charAt(i)).equals("\t") || str(str.charAt(i)).equals("\n") ||
str(str.charAt(i)).equals(" ")){
continue;
}
returnString += str.charAt(i);
}
return returnString;
}// myStringTrim()
答案 0 :(得分:1)
与原始副本匹配时,它是完美的复制品,因此请尝试看看stackbliz并做到这一点:
public String yourTrim() {
int len = value.length;
int st = 0;
char[] val = value;
while ((st < len) && (val[st] <= ' ')) {
st++;
}
while ((st < len) && (val[len - 1] <= ' ')) {
len--;
}
return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
}
答案 1 :(得分:1)
然后将正则表达式用于该目的。通过从提供的字符串中检索匹配项,将得到相同的结果。考虑到您只需要一个字,您只需要为比赛组(0)服务即可。
String mydata = " my test ";
Pattern p = Pattern.compile("\\w+");
Matcher m = p.matcher(mydata);
if (m.find()){
String result = m.group(0);
System.out.format(result);
}
输出:
myTest
编辑:
由于您希望支持正则表达式,例如“我的测试”,因此我为此添加了一个不同的正则表达式,您可以将其用于此目的。
String mydata = " my test \n";
Pattern p = Pattern.compile("\\w+[\\w\\s]*\\w+");
输出:
my test