2014-12-16 5 views
0

배열로 구성을 분할하려하지만 일부 문제가 있습니다.문자열 목록에 자바 스플릿 문자열 목록

내 설정은 다음과 같습니다

Enchantments: Durability:3 Unbreaking:2

내가 내 배열 [0]Durability [1]3 [2]Unbreaking [3]2

처럼보고 싶어하지만 난 단지 내구성에 가서 얻을 수 있습니다 [0]에 3 [1]를 그 이상으로 가지 않을 것입니다. 모든 코드가 작동하며 필요한 것은 다음과 같습니다. Help! 코드 태그는 웹 사이트에서 최악하고 난 당신이 문자열을 분할 할 때 정규식 ":| "을 사용 그래서 여기

if (((String)nodes.get(nodeapi)).contains("enchantments:")){ 
     System.out.println("found"); 
     ench = ((String)nodes.get(nodeapi)).replace("enchantments:", ""); 
     System.out.println(ench); 
     String[] enc = ench.split(" "); 
     System.out.println("0 " + enc[0]); 
     System.out.println("1 " + enc[1]); 
     int p = 0; 
     for (int i2=0;i2<enc.length*2;i2++){ 
       p++; 
       encha = enc[i2].split(":"); 
       System.out.println("Passed loop: " + p + " with encha: "+encha[i2]); 
     } 
} 
+0

주의하십시오. 당신이 올린 코드는''enchantments :''를 빈 문자열로 바꿉니다 만, 여러분의 예제는''enchantments :''다음에 공백이 있습니다.이 공간은 문자열에 남아있을 것입니다. 다른 사람들이 제안한대로''| split ''을 사용하면,''내구성 ''대신에''enc [0]'에 빈 문자열이 남을 것입니다. 왜냐하면'split() 공백을 구분 기호로 사용합니다. 이것이 문제라면'split()'전에'trim()'을 사용하십시오. – ajb

+0

(또는 대답 중 하나를 수행하고 '바꿀 문자열'에 공백을 넣으십시오.) – ajb

답변

0

시도, 내 인생을 얻을 수 없습니다.

그래서 코드는 모양을

string.split(":| "); 

같이 :. ench이 Durability:3 Unbreaking:2

인 경우

String[] enc = ench.split(":| "); 

(다음 배열이 당신이 원하는 것

+0

그렇게 할 때 배열에서 어떻게 보이나요? 내 코드를 똑같이 유지하면 분할을 변경하면됩니다. 처음 2 일을하기 때문에, [0] 내구성이 있다고 말합니다. [3]하지만 목록에 두 번째 항목을 가져 가지 않으므로 목록을 통해 분할하고 분할하려고합니다. 들어가야합니다. Enc에서 항목을 0과 1로 분리하고 enc [1]을 enc 2와 3 등으로 변환해야합니다. – pablo67340

+0

분할 할 문자열은 무엇입니까? – JClassic

+0

5 줄을 ench.split (": |")으로 바꿉니다. JClassic이 말했듯이, 당신은 원하는 원소들을 정확히 포함하는 배열을 가질 것입니다. [0] 내구성 [1] 3 [2] Unbreaking [3] 2 –

0

에게 당신을 다음과 같이 할 수 있습니다.

String x = "Enchantments: Durability:3 Unbreaking:2"; 
x = x.replace("Enchantments: ", ""); 
String[] values = x.split(":|\\s"); 
for(String val : values) 
    System.out.println(val);