2012-02-03 43 views
2

我想要生成一个数组,它根据字符串中的一个字符串拆分字符串,它称为"stop",我也想基于字符串新行(\n)。Java - 根据字符串和换行划分字符串

但是,它似乎并没有根据新行的存在进行拆分,我该怎么做?到目前为止,我有:

String [] myArray = str.split(“stop”);

但我想包括拆分是一个新行,但我似乎无法通过我尝试过的方法来做到这一点。

返回的数据是一个包含一些诸如以下的字符串:

数据1stop数据2stop数据3\n

所以我希望把字符串数据1和数据2成数组,然后还将data3添加到数组中,而不用额外的行。

+0

你想要一个数组(1维)还是一个矩阵(2维)?我的意思是data1stopdata2stopdata3 \ ndata4stopdata5stopdata6 \ n给出{“data1”,“data2”,“data3”,“data4”,“data5”,“data6”}或{{data1“,”data2“,”data3“ {“data4”,“data5”,“data6”}} – 2012-02-03 14:54:40

回答

5

使用split("stop|\\n")String#split的参数是一个包含正则表达式的字符串。

看看http://www.vogella.de/articles/JavaRegularExpressions/article.htmlhttp://www.regular-expressions.info/java.html。他们讨论你的问题。

+0

如果他的字符串是'data1stopdata2stopdata3 \ n'您的方法将给出'data1 data2 data3 \ n' – RanRag 2012-02-03 14:50:05

+0

@RanRag这似乎确实分割字符串成功。我还有一个if语句,用于将data3等同于另一个没有\ n的字符串,这会返回true,所以我只能假定在拆分后删除了\ n。你为什么认为它会把数据留在线上?如果我错了,请描述如何以及为什么。 – mino 2012-02-03 15:01:58

+0

@ m92:我试过了,那是我的输出。 – RanRag 2012-02-03 15:04:00

-2

您可以使用Google Guava Splitter .on(Pattern p)方法。设置您的模式包括“停止”以及“\\ r?\\ n”

0

请记住,如果你想获得一个系统的独立行分隔符,你最好使用:

System.getProperty("line.separator"); 
0

不应该是这样的工作:

String[] a=str.split("(stop|\\n)"); 

未测试虽然。

0

试试这个,

String number = "data1stopdata2stopdata3\\n"; 
String[] number_array = number.split("stop|\\n"); 

for(String s: number_array) 
System.out.println(s.replace("\\n","")); 

输出= data1 data2 data3

0

使用str.split("Stop|\\n");

String str = "Data1\nData2StopData"; 
    String[] a = str.split("Stop|\\n"); 
    System.out.println(Arrays.toString(a)); 

会给[数据1,数据2,数据]

0

除了给出答案,我宁愿用split("stop|\n")而不是split("stop|\\n")。第一个表达式使用Java对换行符的内置支持,而在第二个表达式中,正则表达式“\ n”被解释为换行符。所以第一个表达式的开销较少。