复制String.trim()函数-处理3

时间:2018-11-14 06:31:14

标签: java string processing trim

我正在尝试在处理中复制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()

2 个答案:

答案 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