簡體   English   中英

復制 String.trim() 函數 - 處理 3

[英]Replicating the String.trim() function - Processing 3

我試圖在處理中復制 String.trim() 函數。 我知道 String.trim() 函數會刪除字符串開頭和結尾的制表符 "\\t" 、換行符 "\\n" 和空格。 現在我正在做的是刪除 string 中的所有空格、制表符和換行符。 如何讓它在字符串的開頭和結尾刪除空格、制表符和換行符。

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()

副本在與原始副本匹配時是完美的,因此請嘗試查看Open JDK 源代碼並執行以下操作:

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

然后為此目的使用正則表達式。 它將通過從提供的字符串中檢索匹配來產生相同的結果。 考慮到你只需要一個詞,你只需要將自己加入比賽組(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM