web-dev-qa-db-ja.com

括弧とコンマなしで配列を出力します

ハングマンゲームをAndroidに移植し、いくつかの問題に遭遇しました。元のJavaプログラムはコンソールを使用したため、今度はmy Android layout。

括弧とコンマなしで配列を印刷するにはどうすればよいですか?配列にはスラッシュが含まれており、正しい文字が推測されると1つずつ置き換えられます。

私はArrayListクラスの通常の.toString()関数を使用しており、私の出力は[ a, n, d, r, o, i, d ]。配列を単一のStringとして出力するだけです。

次のコードを使用して配列を埋めます:

List<String> publicArray = new ArrayList<>();

for (int i = 0; i < secretWordLength; i++) {
    hiddenArray.add(secretWord.substring(i, i + 1));
    publicArray.add("-");
}

そして、次のように印刷します。

TextView currentWordView = (TextView) findViewById(R.id.CurrentWord);
currentWordView.setText(publicArray.toString());

任意の助けをいただければ幸いです。

38
SQDK

基本的に、ArrayList.toString()は使用しないでください-自分で文字列を作成してください。例えば:

StringBuilder builder = new StringBuilder();
for (String value : publicArray) {
    builder.append(value);
}
String text = builder.toString();

(個人的には、変数publicArrayが実際に配列ではない場合、それを呼び出さないでしょう。)

51
Jon Skeet

ブラケットとコンマを空のスペースに置き換えます。

String formattedString = myArrayList.toString()
    .replace(",", "")  //remove the commas
    .replace("[", "")  //remove the right bracket
    .replace("]", "")  //remove the left bracket
    .trim();           //remove trailing spaces from partially initialized arrays
96
user489041

次のような Android.text.TextUtils クラスのjoinメソッドを使用できます。

TextUtils.join("",array);
19
icastell

最初

StringUtils.join(array, "");

第二

Arrays.asList(arr).toString().substring(1).replaceFirst("]", "").replace(", ", "")

編集

おそらく最高の:Arrays.toString(arr)

15
AlexR

Java 8以降では、同じ機能を提供するString.joinを使用できます。

指定された区切り文字のコピーで結合されたCharSequence要素のコピーで構成される新しい文字列を返します

String[] array = new String[] { "a", "n", "d", "r", "o", "i", "d" };
String joined = String.join("", array); //returns "Android"

異なる型の配列では、それをString配列またはcharシーケンスIterableに変換する必要があります。

int[] numbers = { 1, 2, 3, 4, 5, 6, 7 };

//both of the following return "1234567"
String joinedNumbers = String.join("",
        Arrays.stream(numbers).mapToObj(String::valueOf).toArray(n -> new String[n]));
String joinedNumbers2 = String.join("",
        Arrays.stream(numbers).mapToObj(String::valueOf).collect(Collectors.toList()));

String.joinの最初の引数は区切り文字であり、それに応じて変更できます。

6
ernest_k

Java8以降を使用している場合、ネイティブでstream()を使用できます。

publicArray.stream()
        .map(Object::toString)
        .collect(Collectors.joining(" "));

参照資料

4
Namo

ブラケットを削除する最も簡単なソリューションは、

1. .toString()メソッドで配列リストを文字列に変換します。

2.use String.substring(1、strLen-1)(strLenは、arraylistからの変換後の文字列の長さです)。

3.Hurraaah ..結果の文字列は、角かっこが削除された文字列です。

これが役に立つことを願って... :-)

4
David

次のようなjoin()関数を使用しました。

i=new Array("Hi", "Hello", "Cheers", "Greetings");
i=i.join("");

どのプリント:
HiHelloCheersGreetings


詳細: Javascript結合-結合を使用して配列をJavascriptの文字列に変換

1
jazkat

Arrays.toString(array_name).replace( "["、 "")。replace( "]"、 "")。replace( "、"、 "");を使用しました。上記のコメントのいくつかで見たように、コンマの後にスペース文字を追加しました(。replace( "、"、 ""))新しい行の各値を出力しても、まだスペース文字が単語をシフトしていました。それは私の問題を解決しました。

0