如何用split方法分隔\n 或者 \r\n,以及连续的也过滤掉?

请问各位大大们,不知这样可否实现?如题:测试用例:abc\ndef\r\nghi测试结果:(3个数据)abcdefghi测试用例:abc\n\n\ndef\r\n\r\n... 请问各位大大们,不知这样可否实现?如题:测试用例:abc\ndef\r\nghi测试结果:(3个数据)abcdefghi测试用例:abc\n\n\ndef\r\n\r\n\r\nghi测试结果:(3个数据)abcdefghi测试用例:abc\n\n\r\n\n\r\n\ndef\r\n\n\n\r\n\r\nghi测试结果:(3个数据)abcdefghi 展开
 我来答
当代教育科技知识库
高能答主

2019-10-22 · 擅长科技新能源相关技术,且研究历史文化。
当代教育科技知识库
采纳数:1828 获赞数:387398

向TA提问 私信TA
展开全部

JavaScript中String对象的split方法可以用来拆分字符串,它接受一个字符串或正则表达式参数作为分隔符,返回被这个分隔符分割之后的字符串数组。一个字符串分割为子字符串,然后将结果作为字符串数组返回。

stringObj.split([separator,[limit]])

stringObj必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。

separator可选项。字符串或 正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字。返回包含整个字符串的单一元素数组。


扩展资料:

Visual Basic

声明:Public Function Split( _ ParamArray separator As Char() _) As String()

用法:Dim instance As StringDim separator As Char()Dim returnValue As String()returnValue = instance.Split(separator)

ASP:语法返回值数组 = Split("字符串","分割符")。

示例:Ctext=Split("你好|早上好|中午好","|")。

split -- 用正则表达式将字符串分割到数组中。

说明array split ( string pattern, string string [, int limit] )。

本函数返回一个字符串数组,每个单元为 string 经区分大小写的正则表达式 pattern 作为边界分割出的子串。如果设定了 limit,则返回的数组最多包含 limit 个单元,而其中最后一个单元包含了 string 中剩余的所有部分。如果出错,则 split() 返回 FALSE。

参考资料来源:百度百科-SPLIT

杨柳风83
2015-06-16 · 知道合伙人教育行家
杨柳风83
知道合伙人教育行家
采纳数:4976 获赞数:114085
2009年大学毕业,10年参加工作,在古浪县新堡初级中学教书

向TA提问 私信TA
展开全部
  split 方法
  将一个字符串分割为子字符串,然后将结果作为字符串数组返回。

  stringObj.split([separator,[limit]])

  stringObj
  必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。

  separator
  可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽
  略该选项,返回包含整个字符串的单一元素数组。

  limit
  可选项。该值用来限制返回数组中的元素个数。

  说明:
  split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解
  。separator 不作为任何数组元素的部分返回。

  示例1:
  public class SplitDemo {
  
  public static String[] ss = new String[20];

  public SplitDemo() {

  String s = "The rain in Spain falls mainly in the plain.";
  // 在每个空格字符处进行分解。
  ss = s.split(" ");
  }

  public static void main(String[] args) {

  SplitDemo demo = new SplitDemo();
  for (int i = 0; i < ss.length; i++)
  System.out.println(ss);
  }

  }

  程序结果:
  The
  rain
  in
  Spain
  falls
  mainly
  in
  the
  plain.

  示例2:
  public class SplitDemo {

  public static String[] ss = new String[20];

  public SplitDemo() {

  String s = "The rain in Spain falls mainly in the plain.";
  // 在每个空格字符处进行分解。
  ss = s.split(" ", 2);
  }

  public static void main(String[] args) {
  SplitDemo demo = new SplitDemo();
  for (int i = 0; i < ss.length; i++)
  System.out.println(ss);
  }

  }

  程序结果:
  The
  rain in Spain falls mainly in the plain.

  示例3:
  public class SplitDemo {

  public static String[] ss = new String[20];

  public SplitDemo() {

  String s = "The rain in Spain falls mainly in the plain.";
  // 在每个空格字符处进行分解。
  ss = s.split(" ", 20);
  }

  public static void main(String[] args) {
  SplitDemo demo = new SplitDemo();
  for (int i = 0; i < ss.length; i++)
  System.out.println(ss);
  }

  }

  程序结果:
  The
  rain
  in
  Spain
  falls
  mainly
  in
  the
  plain.

  示例4:
  public class SplitDemo {

  public static void main(String[] args) {

  String value = "192.168.128.33";
  String[] names = value.split(".");
  for (int i = 0; i < names.length; i++) {
  System.out.println(names);
  }

  }
  }

  运行结果:

  对,没看错!没有任何输出!
  让我们来看看 split 方法的方法签名吧:

  public string[] split(string regex)
  这里的参数的名称是 regex ,也就是 regular expression (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式,看了 split 方法的实现代码就更坚定了我们的信心:

  public string[] split(string regex, int limit) {
  return pattern.compile(regex).split(this, limit);
  }
  split 的实现直接调用的 matcher 类的 split 的方法。读者已经知道,“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。
  只要将
  String[] names = value.split(".");
  改为
  String[] names = value.split("\\.");
  就可以了。

  输出结果:
  192
  168
  128
  33

  再加一点儿补充(这是Java帮助文档中的,更清晰一些):

  public String[] split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串。
  此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。

  limit 参数控制模式应用的次数,因此影响结果数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后项将包含超出最后匹配的定界符的所有输入。如果 n 为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度。如果 n 为零,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。

  例如,字符串 "boo:and:foo" 使用这些参数可生成下列结果:

  Regex Limit 结果

  : 2 { "boo", "and:foo" }
  : 5 { "boo", "and", "foo" }
  : -2 { "boo", "and", "foo" }
  o 5 { "b", "", ":and:f", "", "" }
  o -2 { "b", "", ":and:f", "", "" }
  o 0 { "b", "", ":and:f" }

  这种形式的方法调用 str.split(regex, n) 产生与以下表达式完全相同的结果:

  Pattern.compile(regex).split(str, n)

  参数:
  regex - 定界正则表达式
  limit - 结果阈值,如上所述
  返回:
  字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组
  抛出:
  PatternSyntaxException - 如果正则表达式的语法无效
  从以下版本开始:
  1.4

  public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。
  该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,结果数组中不包括结尾空字符串。

  例如,字符串 "boo:and:foo" 产生带有下面这些表达式的结果:

  Regex 结果
  : { "boo", "and", "foo" }
  o { "b", "", ":and:f" }

  参数:
  regex - 定界正则表达式
  返回:
  字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组。
  抛出:
  PatternSyntaxException - 如果正则表达式的语法无效
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2017-05-18
展开全部
String[] lines = { "abc\ndef\r\nghi", "abc\n\n\ndef\r\n\r\n\r\nghi", "abc\n\n\r\n\n\r\n\ndef\r\n\n\n\r\n\r\nghi" }; for (int k = 0; k < lines.length; k++) { String[] arr = Pattern.compile("[\r\n]+|[\n\r]+|[\n]+").split( lines[k]); System.out.println(); for (int i = 0; i < arr.length; i++) { System.out.println(i + "[" + arr[i] + "]"); } }Console:0[abc]1[def]2[ghi]0[abc]1[def]2[ghi]0[abc]1[def]2[ghi]建议楼主先将'\r'转化为'\n'再进行splite操作,即如下:String[] arr = Pattern.compile("[\n]+").split(lines[k].replace('\r', '\n'));
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-10
展开全部
"[\r\n]+|[\n\r]+|[\n]+"其中[\n]+一定要放在另外两者的后面。[X]:表示以X结构的一个字符串。+:表示匹配可以是一次及以多次|:表示多个匹配字符串间是或关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-10
展开全部
回复 Sodino 的帖子我的意思是,\n和\r\n是最终要替换的特殊字符啊!\r\n是个组合的符号,不能分开的啊!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式