2017-05-29 7 views
0

Ich versuche, die Worte aus der Zeichenfolge zu extrahieren, aber nicht in der Lage, soExtract Teil der Zeichenfolge, wenn Trennzeichen nicht fix ist

Mein String

String inpt="@[[4861:contact:An gela]] and @[[5163:contact:Bash]] and #asda @[[8888:contact:Dash Dash]]"; 

aus

Erwartete zu tun
String[] output={"@[[4861:contact:An gela]]","and","@[[5163:contact:Bash]]","and","#asda","@[[8888:contact:Dash Dash]]"} 

Ich versuchte mit dieser Logik (nicht mit HTML-Tag verwechselt werden, die Teil meiner Anwendung war)

String inpt="@[[4861:contact:An gela]] and @[[5163:contact:Bash]] and #asda @[[8888:contact:Dash Dash]]"; 
     getHtmlTag(inpt); 
public void getHtmlTag(String inpt){ 
     String[] inptArr=inpt.split("&"); 
     for (int i = 0; i < inptArr.length; i++) { 
      if(inptArr[i].contains("@")){ 
       String temp=inptArr[i].replace("[",""); 
       String temp1=temp.replace("]",""); 
       String temp2=temp1.replace("@",""); 
       list.add(temp2); 
       String stop=getRequiredStringValue(temp2); 
       finaldString=finaldString+" "+stop; 
      }else { 
       extraList.add(inptArr[i]); 
       finaldString=finaldString+" "+inptArr[i]; 
      } 
     } 
    } 

public String getRequiredStringValue(String str){ 
     String userID=""; 
     String userName=""; 
     String tag=""; 
      String inputStr[]=str.split(":"); 
      for (int j = 0; j < inputStr.length; j++) { 
       userID=inputStr[0]; 
       userName=inputStr[2]; 
      } 
      tag="<a href='index.php?option=com_community&view=profile&userid="+userID+"'>"+userName+"</a>"; 
     return tag; 
    } 
+2

Was hast du probiert, was hast du jetzt? –

+1

@EugenPechanec Ich habe die Frage bearbeitet check was ich dort gemacht habe und wo ich fehlt –

+0

Hmm, ein Tokenizer, was ist mit sowas? http://cogitolearning.co.uk/?p=525 –

Antwort

2

Sie können dies mit einer RegEx- und String-Split-Methode tun. In Ihrem Fall (basierend auf, was ich von Ihrem Eingang und Ausgang Expected verstehen):

String[] output = input.split("\\s+(?![^\\[]*\\])"); 

Diese RegeEx wird die Zeichenfolge auf den Raum geteilt, aber mit Ausnahme derjenigen, zwischen „[]“.

Verwandte Themen