2016-09-12 4 views
0

를 생성하지 자바 (8)의 분할 나는 다음과 같은 자바 코드는 세 가지 항목에 문자열을 분할 기대한다.왜 마지막 토큰

필자는 이것을 깊이 분석하지 않았 음을 인정해야하지만 필자는 반 직관적 인 것처럼 보입니다.

def test_split(self): 
    line = '1,2,' 
    tokens = line.split(",") 
    for token in tokens: 
     print('-' + token) 
-1 
-2 
- 

및 C#에서 : 나는 무엇을 놓치고

[Test] 
    public void t() 
    { 
     string s = "1,2,"; 
     var tokens = s.Split(','); 
     foreach (var token in tokens) 
     { 
      Console.WriteLine("-" + token); 
     } 
    } 
-1 
-2 
- 

파이썬에서 다음과 같이 두 파이썬과 C#은 세 가지 항목을 생성?

이것은 Java 1.8.0_101입니다. 방법의

+0

두 번째 문자 뒤의 문자는 '' '입니다. 이는 Java (8)에서 빈 문자를 잘못 표현한 것입니다. 올바른 방법은''\ u0000 ''입니다. String csv를''1,2, \ u0000 "'로 변경하면 자바 코드는 파이썬 코드와 동일한 출력을 제공합니다. – progyammer

답변

5

를 사용하여 오버로드 된 버전 :

tokens = line.split(",", -1) 
4

documentation이 문제에 분명하다

이 방법은 작동 주어진 표정으로 2 개의 인수를 취하는 split 메소드를 호출했을 경우와 같게 제한 인수는 0입니다. 따라서 뒤에 빈 문자열 문자열은 결과 배열에 포함되지 않습니다.

관련 문제