-2
String SomeLongString = JavaAPIMethodFor (String[] strings, String delimiter);

または、これも機能する可能性があります。

String SomeLongString = JavaAPIMethodConvertingArrayWithDelimeter (String[] strings, char delimiter)

文字列をより大きな文字列に結合したかったのですが、これは単に役に立たないのです。Arrays.toString(Object someString)を使用してすべてのデータを文字列に追加し、文字列を調整して不要な文字を削除できることを認識しています。しかし、それは実際には効率的ではなく、何かを構築するだけで、それを再構築するだけです。したがって、String []をループして、各要素の間に文字を追加するのが、おそらく次の方法です。

import static org.junit.Assert.*;

import org.junit.Test;

public class DelimetedString {


    private String delimitedString(String [] test, String delimiter){
        StringBuilder result = new StringBuilder();
        int counter = 0;
        if(test.length > counter){
           result.append(test[counter++]);
           while(counter < test.length){
              result.append(delimiter);
              result.append(test[counter++]);
           }
        }
        return result.toString();
    }

    @Test
    public void test() {
        String [] test = new String[] 
{"cat","dog","mice","cars","trucks","cups","I don't know", "anything!"};
        String delimiter = " |...| ";
        assertEquals("DelimitedString misformed",
        "cat |...| dog |...| mice |...| cars |...| trucks "
            +"|...| cups |...| I don't know |...| anything!",
        delimitedString(test, delimiter));
    }

}

私が欲しかったのは、トークナイザーを使用した後に文字列をまとめることでした。私はそのアイデアを放棄しました。おそらくそれは価値があるよりも厄介だからです。より大きな文字列内からサブ文字列をアドレス指定することを選択し、そのためのコードを「回答」に含めました。

私が求めていたのは-JavaAPIにはdelimitedString関数と同等の関数がありますか?何人かの人からの答えはノーのようです。

4

2 に答える 2

1

私の知る限り、組み込みのメソッドはありません。あなたができることはそれの部分文字列を取ることです:

String str = Arrays.toString(arrayHere);
str = str.substring(1, str.lenght() - 1);
于 2011-11-16T22:26:24.297 に答える
1

これが私が一緒に投げることになったクラスです。テキストファイルをチャンクに分割し、行番号を使用してサーブレットを介してチャンクを送信し、関連するデータを取得したいと思います。これは、自宅のサーバーで実行されているアプリで、さまざまなデバイス間でテキストファイルを読み取ったり、ファイルに関連するメタデータを保持したりできます。

package net.stevenpeterson.bookreaderlib;

public class SplitStringUtility {

private String subject;

public SplitStringUtility(String subject) {
    this.subject = subject;
}

public String getRow(int rowAddress, int charsPerRow) {
    String result = "";
    if (rowAddress >= 0 && charsPerRow > 0) {
        int startOfSubString = rowAddress * charsPerRow;
        int endOfSubString = startOfSubString + charsPerRow;
        result = getSubString(startOfSubString, endOfSubString);
    }
    return result;
}

private String getSubString(int startOfSubString, int endOfSubString) {
    String result = "";
    if (startOfSubString <= subject.length()) {
        if (endOfSubString <= subject.length()) {
            result = subject.substring(startOfSubString, endOfSubString);
        } else {
            result = subject.substring(startOfSubString);
        }
    }
    return result;
}

}

私は以下に対してテストしました:

package net.stevenpeterson.bookreaderlib;

import static org.junit.Assert.*;

import net.stevenpeterson.bookreaderlib.SplitStringUtility;

import org.junit.Test;

public class SplitStringUtilityTest {

    public final String empty = "";
    public final String single ="a";
    public final String twoChars = "ab";
    public final String threeChars = "abc";
    public final String manyChars = "abcdefghijklmnopqrstuvwxyz";

    private SplitStringUtility splitter;

    @Test
    public void splitTestsEmpty() {
        makeSplitter(empty);
        assertEquals("We are trying to get a non-existant string",
            "", 
            splitter.getRow(3,4));
    }


    @Test
    public void splitTestsNegativeRowOrColumn() {
        makeSplitter(manyChars);
        assertEquals("We are trying to get a non-existant string",
            "",
            splitter.getRow(-3,4));

        assertEquals("We are trying to get a non-existant string",
            "", 
            splitter.getRow(-1,-1));

        assertEquals("We are trying to get a non-existant string",
            "", 
            splitter.getRow(1,-1));
    }



    @Test
    public void splitTestsSingleCharacterStrings() {
        makeSplitter(single);

        assertEquals("split the string consisting of 1 character",
            "a",
            splitter.getRow(0,1));

        assertEquals("split the string consisting of 1 character, " +
                "but ask for two characters, " +
                "the string containing only a single char " +
                "should be returned","a", splitter.getRow(0,2));

    }

    @Test
    public void splitTestsTwoChars() {
        makeSplitter(twoChars);
        assertEquals("Row #0 of the ab string in 1 column rows",
            "a", 
            splitter.getRow(0,1));

        assertEquals("Row #1 of the ab string in 1 column rows",
            "b",
            splitter.getRow(1,1));

        assertEquals("Row #0 of the ab string in 2 column rows",
            "ab",
            splitter.getRow(0,2));

        assertEquals("Row #1 of the ab string in 4 column rows " 
            +"should return a blank string",
            "",
            splitter.getRow(1,4));

        assertEquals("Row #0 of the ab string in 4 column rows " 
            +"should return the ab string",
            twoChars, 
            splitter.getRow(0,4));

    }


    @Test
    public void splitTestsManyChars() {
        //split the alphabet into rows of 4 characters, return row 3
        //Expect "mnop"
        makeSplitter(manyChars);
        assertEquals("Row #3 of the alphabet in 4 column rows",
            "mnop",
            splitter.getRow(3,4));

        assertEquals("Row #0 of the alphabet in 4 column rows",
            "abcd", 
            splitter.getRow(0,4));

        assertEquals("Row #0 of the alphabet in 26 column rows",
            manyChars, 
            splitter.getRow(0,26));

        assertEquals("Row #0 of the alphabet in 26 column rows",
            "z",
            splitter.getRow(1,25));

        assertEquals("Row #0 of the alphabet in 27 column rows" 
            + " since the alphabet has 26 characters "
            + "it would be nice to get what we have", manyChars,
           splitter.getRow(0,27));
    }


    private void makeSplitter(String subject){
        splitter = new SplitStringUtility(subject);
    }


}
于 2011-12-04T00:23:31.590 に答える