php 去除空字符

php trim()函数可去掉字符串前后的空字符。通常情况下,trim() 将去除这些字符:

" " (ASCII32(0x20)),普通空格符。

"\t" (ASCII9(0x09)),制表符。

"\n" (ASCII10(0x0A)),换行符。

"\r" (ASCII13(0x0D)),回车符。

"\0" (ASCII00x00)),空字节符。

"\x0B" (ASCII11(0x0B)),垂直制表符。

但是空字符如全角空格(ascii:227)和一些控制字符,乱码字符,不可见,尤其是在中文字符串,尤其是一些变量字符,用strlen()计算长度总是多于原始中文。

此时,需要找出这些字符:

如变量值 $a为草莓,但strlen($a)长度为12,而strlen("草莓")为6

利用

$tArr = str_split($a);

foreach ($tArr as $s){

  var_dump(ord($s));

}

在ASCII码int(232) int(141) int(137) int(232) int(142) int(147)前多了

int(239)int(187)int(191)

$htStr = preg_replace("/^[\s\v".chr(239).chr(187).chr(191)."]+/","", $htStr); //替换开头空字符

$htStr = preg_replace("/[\s\v".chr(239).chr(187).chr(191)."]+$/","", $htStr); //替换结尾空字符

替换这些字符后正常。

<think>好的,用户想了解如何用编程方法去除字符串中的空字符或空白字符串。我需要根据提供的引用内容,结合不同编程语言来回答。首先,引用1提到Python的strip方法可以删除开头和结尾的空格,但用户可能需要更多方法,比如删除所有空格或者中间的空格。引用2和3分别提到了Java的trim()和PHP的trim函数,可能还需要补充其他语言的处理方式,比如JavaScript。 用户的问题包括“空字符”和“空白字符串”,需要明确这两者的区别。空字符可能指空格、制表符等,而空白字符串可能指由空白组成的字符串或空字符串。需要分别处理这些情况。 接下来要分语言给出解决方案。Python中可以用strip()处理首尾空格,replace()替换中间空格,或者用正则表达式。Java的trim()现在推荐使用strip(),同时也可以用replaceAll。PHP的trim()函数,同时可以用str_replace或正则。JavaScript有trim()方法,同样可以用replace或正则。另外,用户可能还想知道如何处理空字符串,比如过滤掉数组中的空字符串元素,这可以用filter方法。 需要检查每种方法的正确性,比如Python的replace(" ", "")只能处理空格,而其他空白字符可能需要正则表达式。还要注意不同语言的语法差异,确保示例代码正确。最后,生成相关问题,比如其他语言的实现或更复杂的处理,帮助用户进一步探索。</think>### 如何去除字符串中的空字符或空白字符串? 在编程中,去除字符串中的空字符(如空格、制表符、换行符等)或空白字符串(由空白字符组成的子字符串)是常见的需求。以下是几种主流编程语言的实现方法: --- #### **Python** 1. **去除首尾空白**: 使用`strip()`方法移除字符串开头和结尾的空白字符: ```python s = " Hello World \t\n" cleaned = s.strip() # 输出 "Hello World" ``` 2. **移除所有空格**: 用`replace()`替换所有空格字符: ```python s = "H e l l o" cleaned = s.replace(" ", "") # 输出 "Hello" ``` 3. **正则表达式**: 使用`re.sub`移除所有空白字符(包括制表符、换行符等): ```python import re s = "H\t e\n l l o" cleaned = re.sub(r"\s+", "", s) # 输出 "Hello" ``` --- #### **Java** 1. **去除首尾空白**: Java 11+推荐使用`strip()`,或兼容旧版本的`trim()`: ```java String s = " Hello World \t\n"; String cleaned = s.strip(); // 或 s.trim() ``` 2. **移除所有空格**: 使用`replaceAll()`结合正则表达式: ```java String s = "H e l l o"; String cleaned = s.replaceAll("\\s+", ""); // 输出 "Hello" ``` --- #### **PHP** 1. **去除首尾空白**: 使用`trim()`函数,可指定额外字符: ```php $s = " Hello World \t\n"; $cleaned = trim($s); // 输出 "Hello World" ``` 2. **移除所有空格**: 使用`str_replace`或正则表达式: ```php $s = "H e l l o"; $cleaned = str_replace(' ', '', $s); // 输出 "Hello" // 或使用正则表达式 $cleaned = preg_replace('/\s+/', '', $s); ``` --- #### **JavaScript** 1. **去除首尾空白**: 使用`trim()`方法: ```javascript let s = " Hello World \t\n"; let cleaned = s.trim(); // 输出 "Hello World" ``` 2. **移除所有空格**: 使用`replace()`结合正则表达式: ```javascript let s = "H e l l o"; let cleaned = s.replace(/\s+/g, ""); // 输出 "Hello" ``` --- #### **过滤空字符串** 若需从数组中移除空字符串(如`["a", "", "b"]`转`["a", "b"]`),可用以下方法: ```python # Python arr = ["a", "", "b"] filtered = list(filter(lambda x: x.strip() != "", arr)) ``` ```java // Java List<String> list = Arrays.asList("a", "", "b"); list.removeIf(String::isEmpty); ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值