Answers:
要开始您的作业,请String.split
在正则表达式上拆分字符串,并且该表达式可以是空字符串:
String[] ary = "abc".split("");
产生数组:
(java.lang.String[]) [, a, b, c]
留空的第一条目留给读者练习:-)
注意:在Java 8中,不再包含空的first元素。
String strName = "name";
String[] strArray = new String[] {strName};
System.out.println(strArray[0]); //prints "name"
第二行分配长度为1的String数组。请注意,您不需要自己指定长度,例如:
String[] strArray = new String[1];
取而代之的是,长度取决于初始化器中元素的数量。使用
String[] strArray = new String[] {strName, "name1", "name2"};
创建一个长度为3的数组。
假设您确实想要一个单字符字符串数组(不是a char[]
或Character[]
)
1.使用正则表达式:
public static String[] singleChars(String s) {
return s.split("(?!^)");
}
零宽度负前瞻可防止在输入开始时进行模式匹配,因此不会出现前导空字符串。
2.使用番石榴:
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");
[编辑]如果需要单字母字符串,可以使用:
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)
不必要地对单个字符串进行无聊访问的情况而言是完美的选择!;)
char[]
=)
只需在Java中使用.tocharArray()方法
String k = "abc";
char alpha = k.tocharArray();
这在JAVA 8中应该可以正常工作
您可以使用string.chars().mapToObj(e -> new String(new char[] {e}));
,尽管这很长,并且仅适用于Java8。以下是一些其他方法:
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(", ");
最后一个不必要的长,只是为了好玩!
另一个方法:
如前所述,您可以很容易地将原始String“ name”转换为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"]
谷歌番石榴的另一个选择是Splitter.split()和Splitter.splitToList(),它们分别返回一个迭代器和一个列表。与apache版本不同,Splitter将在以下位置抛出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
将生成空的1st,您必须将其从数组中删除。这很无聊。
基于此问题的标题,我来到这里是想将String转换为子字符串数组,该子字符串数组由某些定界符分开。我将在此处为可能有相同问题的其他人添加答案。
通过在每个空格处分割字符串,可以构成一个单词数组:
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中测试
这是使用split方法将简单字符串转换为字符串数组。
String [] stringArray="My Name is ABC".split(" ");
输出量
stringArray[0]="My";
stringArray[1]="Name";
stringArray[2]="is";
stringArray[3]="ABC";
String[] ary = new String[] { "name" };
,你需要什么操作?例如拆分字符?