如何按空格或换行符( )分割字符串?现有正则方案失效
解决字符串按空格或换行符分割的问题
你的问题出在正则表达式的写法上——\\r?\\n? 这个规则其实是在匹配「可选的换行符(\r或\n)后面跟着一个空格」,所以只有当换行后紧接着空格时才会触发分割,单纯的换行(比如one\nOption里的换行)根本匹配不到,自然就没法拆分啦。
给你几个靠谱的解决方案:
方案一:匹配任意空格或换行符(推荐)
用正则[\\r\\n ]+来匹配所有可能的分隔符,包括单个空格、单个换行(\r、\n、\r\n),甚至是连续的分隔符(比如多个空格、换行加空格的组合),代码如下:String[] parts = message.split("[\\r\\n ]+");这个规则会把所有连续的分隔符当成一个来处理,避免分割出空字符串(如果文本开头/结尾有分隔符的话,可以先调用
message.trim()预处理一下)。方案二:明确匹配两种分隔符
如果只想严格匹配单个空格或单个换行(不处理连续的分隔符),可以用|来分隔两种匹配规则:String[] parts = message.split("\\r\\n|\\r|\\n| ");不过这种方式如果遇到连续的分隔符(比如两个空格),会分割出空字符串,需要额外过滤这些无效元素。
举个实际例子,假设你的输入文本是:
Hello world
one
Option test
用方案一的代码分割后,会得到数组:["Hello", "world", "one", "Option", "test"],完全符合你的拆分需求。
内容的提问来源于stack exchange,提问作者user9536923
相关产品推荐
相关产品推荐

