안드로이드 스플릿 스트링


227

나는이라는 문자열을 가지고 있으며 CurrentString이와 같은 형태입니다 "Fruit: they taste good".
를 구분 기호로 CurrentString사용하여 분할하고 싶습니다 :.
그렇게하면 단어 "Fruit"가 자체 문자열로 분리되어 "they taste good"다른 문자열이됩니다.
그런 다음 단순히 SetText()2 개의 다른 TextViews문자열 을 사용 하여 해당 문자열을 표시하고 싶습니다 .

이것에 접근하는 가장 좋은 방법은 무엇입니까?


아마도 정규 표현식을 읽어보십시오. 그들은 잘 작동합니다.
Shouvik

10
@Falmarri-프로그래밍에 관한 독특한 질문은 Stack Overflow에서 환영합니다.
Tim Post

답변:


606
String currentString = "Fruit: they taste good";
String[] separated = currentString.split(":");
separated[0]; // this will contain "Fruit"
separated[1]; // this will contain " they taste good"

두 번째 문자열의 공백을 제거 할 수 있습니다.

separated[1] = separated[1].trim();

점 (.)과 같은 특수 문자로 문자열을 분할하려면 점 앞에 이스케이프 문자 \를 사용해야합니다.

예:

String currentString = "Fruit: they taste good.very nice actually";
String[] separated = currentString.split("\\.");
separated[0]; // this will contain "Fruit: they taste good"
separated[1]; // this will contain "very nice actually"

다른 방법이 있습니다. 예를 들어 StringTokenizer클래스를 (에서 java.util) 사용할 수 있습니다 .

StringTokenizer tokens = new StringTokenizer(currentString, ":");
String first = tokens.nextToken();// this will contain "Fruit"
String second = tokens.nextToken();// this will contain " they taste good"
// in the case above I assumed the string has always that syntax (foo: bar)
// but you may want to check if there are tokens or not using the hasMoreTokens method

감사합니다! 새 Time 객체를 만들 때 시간과 분을 분리 할 때도 유용합니다.
일에 근무 함

24
감사합니다! .split () 메소드가 Android에서 전혀 작동하지 않습니다! StringTokenizer가 제대로 작동합니다.
Ayush Pateria

그렇습니다. 무슨 문제가 있었습니까?
Cristian

android에서 split은 간단한 문자열 구분자 대신 정규식을받습니다.
htafoya

1
@HardikParmar etPhoneNo.getText().toString().replaceAll("\\D", "");는 숫자가 아닌 모든 것을 대체한다고 말합니다
MilapTank


52

쉼표로 안드로이드 분할 문자열

String data = "1,Diego Maradona,Footballer,Argentina";
String[] items = data.split(",");
for (String item : items)
{
    System.out.println("item = " + item);
}

25
     String s = "having Community Portal|Help Desk|Local Embassy|Reference Desk|Site News";
     StringTokenizer st = new StringTokenizer(s, "|");
        String community = st.nextToken();
        String helpDesk = st.nextToken(); 
        String localEmbassy = st.nextToken();
        String referenceDesk = st.nextToken();
        String siteNews = st.nextToken();

22

Android 전용 TextUtils.split () 을 고려할 수도 있습니다. 메서드 .

TextUtils.split ()과 String.split ()의 차이점은 TextUtils.split ()에 설명되어 있습니다.

분할 할 문자열이 비어 있으면 String.split ()은 [ '']를 반환합니다. 이것은 []를 반환합니다. 결과에서 빈 문자열은 제거되지 않습니다.

나는 이것이 더 자연스러운 행동이라고 생각합니다. 본질적으로 TextUtils.split ()은 String.split ()의 얇은 래퍼이며 빈 문자열을 구체적으로 처리합니다. 이 방법의 코드 는 실제로 매우 간단합니다.


문자열에서 split ()을 직접 호출하는 대신 TextUtils.split ()을 사용하면 어떤 이점이 있습니까?
nibarius

TextUtils.split ()과 String.split ()의 차이점을 명확히하기 위해 수정 된 답변
gardarh

고맙게도 실제로 TextUtils.split ()에 대한 설명서를 읽었지만 어떤 이유로 든이 세부 정보를 놓쳤습니다. 나는 그것이 실제로 말한 것을 이해하기 위해 피곤했다고 생각합니다.
nibarius

0

문자열 s = "String ="

String [] str = s.split ( "="); // 현재 str [0]은 "hello"이고 str [1]은 "goodmorning, 2,1"입니다.

이 문자열을 추가

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.