2017-09-24 12 views

답변

1

이 함수에 대한 source code에 대한 주석을 달기에는 충분하지 않지만 according to one of the developers of Open Refine이 동작은 정상입니다 (편집 : Owen의 코멘트에 대한 자세한 내용은 아래 참조). 이 때문에 문자열을 나눌 수있는 다른 기능이 있습니다.

sep가 시작 부분이나 문자열의 끝에있을 때 value.smartSplit(/a/), 예를 들어,보다 일관성있는 결과를 제공합니다

row value value.smartSplit(/a/) 
1. abcdef [ "", "bcdef" ] 
2. bcdefa [ "bcdef", "" ] 
3. badef [ "b", "def" ] 

이것은 omitfragment = true 옵션을 partition()을 사용하는 것과 같은 결과이다 활성화 :

개발자로 전송
row value value.partition(/a/, true) 
1. abcdef [ "", "bcdef" ] 
2. bcdefa [ "bcdef", "" ] 
3. badef [ "b", "def" ] 
+2

(A 등록 특급 포함) OpenRefine '분할'기능 단순히 자바 문자열을 사용합니다 ' 분할 '방법. 이 메서드는 "이 패턴과 일치하는 다른 하위 시퀀스에 의해 종료되는 입력 시퀀스의 각 하위 문자열을 포함하는"배열을 생성합니다. 즉 시퀀스의 종결 자로 일치시킨 패턴을 항상 가져옵니다. 패턴이 문자열의 첫 번째 문자와 일치하면 앞에 오는 하위 문자열이 비어 있으므로 첫 번째 빈 하위 문자열입니다. 자세한 내용은 https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#split(java.lang.CharSequence,%20int) –

+0

감사합니다! value.partition 및 value.smartSplit ... –

+0

다시 생각해보십시오 ... preserveAllTokens = false 인 경우에도 [ "", "abc"]가있는 것이 정상입니까? –