【发布时间】:2012-07-30 16:52:11
【问题描述】:
我想知道如何将一个大字符串拆分为一系列较小的字符串或单词。 例如:
我想遛狗。
我想要一个字符串:"I",
另一个字符串:"want"等
我该怎么做?
【问题讨论】:
-
请显示您尝试过的什么(例如,您是否在文档中寻找字符串的“split”一词?)
-
是的,String#split() 的命名非常含糊:-P
标签: java
我想知道如何将一个大字符串拆分为一系列较小的字符串或单词。 例如:
我想遛狗。
我想要一个字符串:"I",
另一个字符串:"want"等
我该怎么做?
【问题讨论】:
标签: java
使用split()方法
例如:
String s = "I want to walk my dog";
String[] arr = s.split(" ");
for ( String ss : arr) {
System.out.println(ss);
}
【讨论】:
split "foo2bar" 到["foo", "2", "bar"] ??需要使用 RegExp 的简单解决方案。
作为更通用的解决方案(但仅限 ASCII!),在单词之间包含任何其他分隔符(如逗号和分号),我建议:
String s = "I want to walk my dog, cat, and tarantula; maybe even my tortoise.";
String[] words = s.split("\\W+");
正则表达式意味着分隔符将是任何不是单词 [\W] 的内容,至少包含一个 [+]。因为 [+] 是贪婪的,所以它会采用例如 ';'和 ' ' 一起作为一个分隔符。
【讨论】:
正则表达式也可以用来分割单词。
\w 可用于匹配单词字符([A-Za-z0-9_]),从而将标点符号从结果中移除:
String s = "I want to walk my dog, and why not?";
Pattern pattern = Pattern.compile("\\w+");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group());
}
输出:
I
want
to
walk
my
dog
and
why
not
请参阅Pattern 的 Java API 文档
【讨论】:
如果您的短语包含重音字符,请查看我的other answer:
String[] listeMots = phrase.split("\\P{L}+");
【讨论】:
فنّى 将被拆分成两个词。
另一种方法,使用StringTokenizer:
String s = "I want to walk my dog";
StringTokenizer tokenizer = new StringTokenizer(s);
while(tokenizer.hasMoreTokens()) {
System.out.println(tokenizer.nextToken());
}
【讨论】:
StringTokenizer 查找字符串中的连续标记,并一一返回。
要在单词之间包含任何分隔符(就像除了所有小写和大写字母之外的所有内容),我们可以这样做:
String mystring = "hi, there,hi Leo";
String[] arr = mystring.split("[^a-zA-Z]+");
for(int i = 0; i < arr.length; i += 1)
{
System.out.println(arr[i]);
}
这里的正则表达式意味着分隔符将是任何不是大写或小写字母[^a-zA-Z],至少一组[+]。
【讨论】:
您可以使用String 类的split(" ") 方法,并可以得到每个单词,代码如下:
String s = "I want to walk my dog";
String []strArray=s.split(" ");
for(int i=0; i<strArray.length;i++) {
System.out.println(strArray[i]);
}
【讨论】:
使用split()
String words[] = stringInstance.split(" ");
【讨论】:
此正则表达式将按空格分割单词,如空格、制表符、换行符:
String[] str = s.split("\\s+");
【讨论】:
StringTokenizer separate = new StringTokenizer(s, " ");
String word = separate.nextToken();
System.out.println(word);
【讨论】:
你可以使用 Apache commons 的 StringUtils 类
String[] partsOfString = StringUtils.split("I want to walk my dog", StringUtils.SPACE)
【讨论】:
Java String split() 方法示例
public class SplitExample{
public static void main(String args[]){
String str="java string split method";
String[] words=str.split("\\s");//splits the string based on whitespace
for(String word:words){
System.out.println(word);
}
}
}
【讨论】:
class test{
public static void main(String[] args){
StringTokenizer st= new StringTokenizer("I want to walk my dog.");
while (st.hasMoreTokens())
System.out.println(st.nextToken());
}
}
【讨论】:
String[] str = s.split("[^a-zA-Z]+");
【讨论】: