2014-02-08 17 views
1

的幫助下,我有以下內容的txt文件:閱讀單個或兩個來自文件的話用正則表達式

one two, three, four five, six seven, eight, nine, ten 

你能不能幫我寫讀一兩句話是正確的正則表達式(以空格)?

需要的是:

stroke[0] = "one two", 

stroke[1] = "three", 

stroke[2] = "four five", 

stroke[3] = "six seven", 

stroke[4] = "eight", 
... 

我的代碼:

Scanner sc = new Scanner(getResources().openRawResource(R.raw.skills)); 
     while (sc.hasNext()) { 
      stroke[n] += sc.next("\\w|\\w\\s\\w"); 
      n++; 
     } 
+0

如何在逗號分割然後清理尾隨空格?另外,你需要在你的正則表達式中使用量詞。 '\\ w'匹配單個字符,而不是單詞。 – Jerry

回答

0

你或許應該只使用.split(", ")但如果你必須使用正則表達式,你可以這樣做:

的正則表達式:

([^,]+) 

工作正則表達式的例子:

http://regex101.com/r/cR0sV4

的Java:

**注意,我不是在Java語法經歷,但是它會去這樣的事情。(如果請原諒我這是不完全正確的Java語法。)

String str = "one two, three, four five, six seven, eight, nine, ten"; 

Pattern pattern = Pattern.compile("([^,]+)"); 

Matcher matcher = pattern.matcher(str); 

while (matcher.find()) { 
     System.out.println(trim(matcher.group())); 
} 

注意trim()刪除任何前面的空白。

類似的東西..再次,我不知道Java,但正則表達式的作品。看例子。 :)

0
String str = {one two, three, four five, six seven, eight, nine, ten} 

String[] string = str.split(",\\s+"); 
0

如果約定是文件有這樣的格式,那麼如果您在掃描儀使用useDelimiter("\\s*,\\s*)你可以得到相同的結果,像

Scanner sc = new Scanner(getResources().openRawResource(R.raw.skills)).useDelimiter("\\s*,\\s*");