Java:使用带有重载的分隔符的.split(仅使用charAt()和length())

时间:2015-10-12 09:41:12

标签: java string

所以使用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)

标题

3 个答案:

答案 0 :(得分:1)

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

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

delidelimString array。您无法直接打印数组的内容。您需要使用for-loop(或while)迭代它们并单独打印每个元素。

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 :(得分:1)

我不确定你到底是什么,但是如果你不能使用split方法,你可以简单地得到一个方法,它接受2个参数,要拆分的字符串和作为分隔符。一旦你有了这个,你可以迭代字符串并检查你拥有的字符是否是分隔符。如果是,则拆分并移至下一个:

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;
}

答案 2 :(得分: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