2015-10-12 15 views
0

所以使用charAt()和length()我應該產生:(添加,我無法使用數組)Java:對使用重載的分隔符使用.split(僅使用charAt()和length())

string: one,two,three, delimiter: ’,’ 
one 
two 
three 
string: one,two,three, delimiter: ’o’ 
ne,tw 
,three 
string: four,,five,,six, delimiter: ’,’ 
four 
five 
six 
string: four,,five,,six, delimiter: ’o’ 
f 
ur,,five,,six 

我不知道從哪裏開始的這一個,因爲幾乎所有我發現使用了比我允許使用的那些不同的方法。我不確定我甚至被允許使用.split,但我沒有看到使用這種方法。這裏是我自己得到的:

public static void main(String[] args) 
{ 

     String a = "one,two,three"; 
     String b = "four,,five,,six"; 


} 

public static void stringSplit(String a, String b, char del) 

{ 
     String[] deli = a.split(","); 
     String[] delim = b.split("o"); 

     System.out.println("%s" + deli); 
     System.out.println("%s" + delim); 
}` 

我可以採取什麼步驟來解決這個問題,同時仍然堅持預設?我似乎無法找到任何有助於我在這個過程中不使用與允許的不同的東西。如果能夠,幫助不回答將會更好。永遠不會學習,如果我只是複製粘貼。它必須從一個方法調用,該函數不能返回任何東西。該方法必須具有public static void stringSplit(String s, char del)

+1

嗯,我會改變你的方法取兩個參數,而不是三:字符串拆分以及將其拆分的內容。然後調用你的方法兩次。如果你使用一個字符串而不是一個字符串來「將它分開」參數,那將會更簡單,因爲你可以直接調用String.split。 –

+0

@ Jon Skeet謝謝你的回答!但是,我將如何去做這個過程呢?我不確定如何在一種方法上多次調用。 – NaughtyBear

+2

例如,您可以從'main'調用'stringSplit(「一,二,三」,「,」);'然後'stringSplit(「一,二,三」,「o」)。 –

回答

1

我不知道你是什麼後,究竟,但如果你不能使用split方法,你可以簡單的有哪些需要兩個參數的方法,要分割的字符串和將作爲分隔符的字符。一旦你有了,你可以遍歷字符串並檢查你所擁有的字符是否是分隔符。如果是,你再拆,並移動到下一個:

public List<String> split(String source, char delimeter) 
{ 
    List<String> result = new ArrayList<>(); 
    StringBuilder sb = new StringBuilder(); 
    for(int i = 0; i < source.length; i++) 
    { 
      if(source.charAt(i) == delimeter) 
      { 
       result.add(sb.toString()); 
       sb.Clear(); 
      } 
      else 
      { 
       sb.append(source.charAt(i)); 
      } 
    } 
    return result; 
} 
+0

@ npinti你的路線非常有用!但是,有沒有辦法解決使用數組的問題?那些不會被使用。我從來沒有像你說的那樣去做'if'陳述,這當然有助於前進。 – NaughtyBear

+1

@NaughtyBear:您需要使用動態數據結構,以便在向其中添加元素時能夠增長。列表提供了一個'toArray'方法來獲取數組。如果你想完全消除列表,你需要首先查看字符串並計算出分隔符,然後創建一個比分隔計數大1的數組。 – npinti

1
String[] deli = a.split(","); 
    String[] delim = b.split("o"); 

    System.out.println("%s" + deli); 
    System.out.println("%s" + delim); 

deli的和delimString array標題。您無法直接打印數組的內容。您需要使用for-loop(或同時)遍歷它們並逐個打印每個元素。

for (String value : deli) { 
    System.out.println(value); 
} 

for (String value : delim) { 
    System.out.println(value); 
} 

System.out.println("%s" + deli); 

而且使用的是println方法,這將準確打印的內容。如果你想使用的格式方法那麼這將是這樣的:

System.out.format("%s", value); 
1
public static void main(String[] args) { 
     List<String> mySplittedList = stringSplit("one,two,three", 'o'); 
     for (String s : mySplittedList) 
      System.out.println(s); 
    } 

    public static List<String> stringSplit(String input, char del) { 
     StringBuilder temp = new StringBuilder(); 
     List<String> mySplittedList = new ArrayList<String>(); 
     int i = 0; 
     for (char c : input.toCharArray()) { 
      if (c == del) { 
       if (temp.length() > 1) { 
        mySplittedList.add(temp.toString()); 
       } 
       temp = new StringBuilder(); 
      } else { 
       temp.append(c); 
      } 

      i++; 
      if (i == input.toCharArray().length) { 
       mySplittedList.add(temp.toString()); 
      } 
     } 
     return mySplittedList; 
    } 

輸出

ne,tw 
,three 
相關問題