如何高效處理字符串,去除長度小于等于2和大于等于3的部分?

如何高效處理字符串,去除長度小于等于2和大于等于3的部分?

本文探討如何高效處理字符串,去除長度小于等于2和大于等于4的部分,并以逗號分隔的形式輸出結果。 給定原始字符串:”1,22,333,啊,啊啊,啊啊啊,4444″,期望結果為”22,啊啊啊”。

問題分析:

我們需要根據字符串長度進行篩選,保留長度為3的子字符串。 原始代碼中存在一個問題:它試圖去除長度小于等于2 大于等于3的部分,這導致任何字符串都會被去除。 正確的邏輯應該是只保留長度為3的子字符串。

改進后的php代碼:

<?php  $str = "1,22,333,啊,啊啊,啊啊啊,4444"; $arr = explode(",", $str);  $result = array_filter($arr, function ($s) {     return mb_strlen($s, 'UTF-8') == 3; // 只保留長度為3的字符串 });  echo implode(",", $result); // 輸出結果  ?>

代碼解釋:

  1. explode(“,”, $str): 將原始字符串以逗號分隔成數組。
  2. array_filter($arr, function ($s) { … }): 使用匿名函數作為回調函數,對數組進行過濾。 mb_strlen($s, ‘UTF-8’) == 3 確保只保留長度為3的UTF-8編碼的字符串。
  3. implode(“,”, $result): 將過濾后的數組元素用逗號連接成字符串。

效率:

此方法直接利用PHP內置的mb_strlen函數和array_filter函數,效率高且代碼簡潔。 避免了自定義函數的開銷,并且array_filter函數針對數組過濾進行了優化。 相比于循環遍歷,此方法更符合PHP的編程風格,也更易于閱讀和維護。 最終輸出結果為 “333,啊啊啊” (注意,與原文期望結果略有不同,因為原文邏輯存在錯誤)。

改進后的代碼解決了原始代碼中的邏輯錯誤,并提供了更高效、更簡潔的解決方案。

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享