2009-07-16 10 views
2

RegEx를 배우고 싶지만 지금 당장이를 이해할 시간이 없습니다. - 그래서 나는 지역 사회의 능력을 악용하려고 시도하고있다.정규식을 사용하여 문자열을 문자로 분할하는 방법은 무엇입니까?

나는 받아 들일 수있는 1 자리 주석 변수 목록을 포함하는 문자열을 가지고 있습니다.

String comments = "#;"; 

그리고 내가 원하는 :

무엇 정규식 문자열
String[] parsedComments = {"#", ";"}; 

내 문제를 해결할 것인가?

String[] parsedComments = comments.split(/* "???" */); 

답변

4

먼저 배열로 분할해야하는 이유는 무엇입니까? String은 인덱스에서 문자를 가져올 때 사용할 수있는 것과 거의 똑같은 메서드를 제공하며 사실상 동일한 성능을 제공합니다.

string.split(""); 

이이 결과 배열의 첫 번째 POS 당신에게 여분의 빈 문자열을 줄 것이다 :

그러나, 당신의 질문에 대답합니다.

+0

감사. 내가 필요로하는 것보다 더 복잡하게하기 위해 노력하고있는 것처럼 보입니다. – Nate

1

그냥 [0] 댓글 [1] ... 댓글 [N]

+1

Java에 없습니다. cjstehno의 대답을 참조하십시오. –

+0

이동 중에 너무 많은 언어가 있음 : – Lazarus

2

내가 내 원래의 대답을 오해 주석을 사용하여 문자열 인덱스에 액세스 할 수 있습니다. 당신은 정규 표현식을 원하지 않습니다. 정규 표현식은 패턴을 찾는 데 사용되며 분리하려는 것입니다. 빈 문자열을 사용할 수도 있지만 빈 문자열뿐만 아니라 문자도 반환합니다.

색인을 통해서만 액세스 할 수 있습니다.

4

이 다른 이상한 해킹 사이를 수행해야합니다

String[] parsedComments = comments.split("(?!^)"); 

그것은 거의 정규식을위한 일 없다,하지만. 문자열 전체를 반복하고 각 1 문자의 부분 문자열을 배열로 만들 수 있습니다.

+0

- "split"에 대한 인수로 ""를 사용하여 얻을 수있는 [ "", "#", ";"] 결과를 얻지 못했습니다. –

+0

Oy. 나는 Perl에서 정규식을 테스트하고 있으며, 그렇게하지 않는다. 가능하면 빈 문자열을 억제하도록 편집되었습니다. – chaos

+1

"(?

12

왜 정규식을 사용하고 싶습니까? 예를 들어 String.toCharArray()을 시도하십시오.

+4

방금 ​​나를 괴롭혔다. –

+0

나는 regexes를 사용하는 것이 잔인하다는 것에 동의하지만, 여러분의 예제는'String []'결과가 아닌'char []'결과를 준다. –

+0

사실입니다.그러나 문자 배열은 문자 배열을 저장하는 데 훨씬 좋은 데이터 구조입니다. 물론 확실하지 않은 이유로 문자열 배열이 절대적으로 필요한 경우는 예외입니다. 그러나 더 직관적 인'char []'형식으로 작업하도록 모든 로컬 코드를 업데이트 할 수 있습니다. – soulmerge

2

"Daniel"과 "Lazarus"에게 코멘트로 추가하려고했으나 아직 명성 점수가 충분하지 않습니다. 오해가 아니라면 다음을 사용하여 원래 문자열에 액세스하라는 의미입니다. 색인. 자바에서는 그렇게 할 수 없습니다.

String foo = "abcde"; 
String bee = foo[1]; // not valid 

내가 오해 한 경우 사과드립니다. 그렇지 않다면, 나는 후손을 위해 그것을 명확히하고 싶었다. :-)

+0

맞습니다. Java String은 char의 배열이 아닙니다. 캐릭터는 그 인덱스에 의해 액세스 할 수 있습니다 만, charAt() 메소드를 사용합니다. surrogate 쌍을 허용하려면 codePointAt()를 사용하십시오. –

관련 문제