私が持っているstring = "name";
私は、文字列配列に変換します。どうすればいいのですか?Java組み込み関数はありますか?手動で実行できますが、Java組み込み関数を検索しています。
文字列の各文字が文字列になる配列が必要です。char 'n'のように、配列に格納された文字列「n」になります。
私が持っているstring = "name";
私は、文字列配列に変換します。どうすればいいのですか?Java組み込み関数はありますか?手動で実行できますが、Java組み込み関数を検索しています。
文字列の各文字が文字列になる配列が必要です。char 'n'のように、配列に格納された文字列「n」になります。
回答:
割り当てを開始するString.split
には、正規表現で文字列を分割し、この式は空の文字列である可能性があります。
String[] ary = "abc".split("");
配列を生成します:
(java.lang.String[]) [, a, b, c]
空の最初のエントリを取り除くことは、読者の練習問題として残します:-)
注: Java 8では、空の最初の要素は含まれなくなりました。
String strName = "name";
String[] strArray = new String[] {strName};
System.out.println(strArray[0]); //prints "name"
2行目は、長さが1のString配列を割り当てます。次のように、自分で長さを指定する必要はありません。
String[] strArray = new String[1];
代わりに、長さは初期化子の要素の数によって決まります。使用する
String[] strArray = new String[] {strName, "name1", "name2"};
長さ3の配列を作成します。
本当に単一文字の文字列の配列が必要であると仮定します(char[]
または以外Character[]
)
1.正規表現を使用する:
public static String[] singleChars(String s) {
return s.split("(?!^)");
}
ゼロ幅の負の先読みは、入力の最初のパターンマッチングを防止するため、先行する空の文字列を取得しません。
2. Guavaの使用:
import java.util.List;
import org.apache.commons.lang.ArrayUtils;
import com.google.common.base.Functions;
import com.google.common.collect.Lists;
import com.google.common.primitives.Chars;
// ...
public static String[] singleChars(String s) {
return
Lists.transform(Chars.asList(s.toCharArray()),
Functions.toStringFunction())
.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
}
それはより単純にならないので、私はそれが単に必要であるとは思いません
String[] array = {"name"};
もちろん、あなたが主張するなら、あなたは書くことができます:
static String[] convert(String... array) {
return array;
}
String[] array = convert("name","age","hobby");
[編集] 1文字の文字列が必要な場合は、以下を使用できます。
String[] s = "name".split("");
残念ながらs [0]は空になりますが、その後にn、a、m、eの文字が続きます。これが問題である場合、例えばSystem.arrayCopyを使用して、最初の配列エントリを取り除くことができます。
Java 8では、これを実行できるメソッドがあります:toCharArray():
String k = "abcdef";
char[] x = k.toCharArray();
これにより、次の配列になります。
[a,b,c,d,e,f]
String.charAt(0)
、1文字の文字列に不必要にアクセスする代わりに文字が必要な場合に最適です。;)
string.chars().mapToObj(e -> new String(new char[] {e}));
これは非常に長く、Java 8でのみ機能しますが、を使用できます。さらにいくつかのメソッドを次に示します。
string.split(""); (Has an extra whitespace character at the beginning of the array if used before Java 8)
string.split("|");
string.split("(?!^)");
Arrays.toString(string.toCharArray()).substring(1, string.length() * 3 + 1).split(", ");
最後は不必要に長いので、お楽しみに!
追加の方法:
すでに述べたように、元の文字列「名前」を非常に簡単にchar配列に変換できます。
String originalString = "name";
char[] charArray = originalString.toCharArray();
この一連の考え方を続けるには、char配列をString配列に変換します。
String[] stringArray = new String[charArray.length];
for (int i = 0; i < charArray.length; i++){
stringArray[i] = String.valueOf(charArray[i]);
}
この時点で、stringArrayには元の文字列「name」の元の値が入力されます。たとえば、今呼び出す
System.out.println(stringArray[0]);
この場合、値「n」を(文字列として)返します。
空の文字列をString.split()で分割すると、空の文字列を含む単一の要素配列が返されます。ほとんどの場合、空の配列を取得するか、nullを渡した場合はnullを取得することをお勧めします。これは、org.apache.commons.lang3.StringUtils.split(str)で取得したとおりです。
import org.apache.commons.lang3.StringUtils;
StringUtils.split(null) => null
StringUtils.split("") => []
StringUtils.split("abc def") => ["abc", "def"]
StringUtils.split("abc def") => ["abc", "def"]
StringUtils.split(" abc ") => ["abc"]
別のオプションは、Google guava Splitter.split()とSplitter.splitToList()で、イテレータとリストを対応して返します。Apacheバージョンとは異なり、スプリッターはNPEをスローしnull
ます。
import com.google.common.base.Splitter;
Splitter SPLITTER = Splitter.on(',').trimResults().omitEmptyStrings();
SPLITTER.split("a,b, c , , ,, ") => [a, b, c]
SPLITTER.split("") => []
SPLITTER.split(" ") => []
SPLITTER.split(null) => NullPointerException
イテレータではなくリストが必要な場合は、Splitter.splitToList()を使用します。
/**
* <pre>
* MyUtils.splitString2SingleAlphaArray(null, "") = null
* MyUtils.splitString2SingleAlphaArray("momdad", "") = [m,o,m,d,a,d]
* </pre>
* @param str the String to parse, may be null
* @return an array of parsed Strings, {@code null} if null String input
*/
public static String[] splitString2SingleAlphaArray(String s){
if (s == null )
return null;
char[] c = s.toCharArray();
String[] sArray = new String[c.length];
for (int i = 0; i < c.length; i++) {
sArray[i] = String.valueOf(c[i]);
}
return sArray;
}
メソッドString.split
は空の1番目を生成します。これを配列から削除する必要があります。それは退屈だ。
この質問のタイトルに基づいて、文字列を区切り文字で区切られた部分文字列の配列に変換するためにここに来ました。同じ質問があるかもしれない他の人のためにここにその答えを追加します。
これは、すべてのスペースで文字列を分割することにより、単語の配列を作成します。
String str = "string to string array conversion in java";
String delimiter = " ";
String strArray[] = str.split(delimiter);
これにより、次の配列が作成されます。
// [string, to, string, array, conversion, in, java]
Java 8でテスト済み
String[] ary = new String[] { "name" };
ですか?たとえば文字で分割?