【发布时间】:2017-06-08 18:09:08
【问题描述】:
如何删除用户选择的字符串中第一个空格后的所有内容?我在读这个how to remove some words from a string in java。这对我有帮助吗?
【问题讨论】:
-
“空格”是指空格字符还是其他空格?
-
你的意思是从字符串中提取第一个单词吗?
如何删除用户选择的字符串中第一个空格后的所有内容?我在读这个how to remove some words from a string in java。这对我有帮助吗?
【问题讨论】:
您可以使用 replaceAll 和正则表达式 \s.* 匹配空格后的所有内容:
String str = "Hello java word!";
str = str.replaceAll("\\s.*", "");
输出
Hello
就像@Coffeehouse Coder 在评论中提到的那样,如果输入以空格开头,此解决方案将替换所有内容,因此如果您想避免这种情况,您可以使用string.trim() 修剪您的输入,这样它就可以删除开头的空格最后。
【讨论】:
after first empty space
假设字符串的开头没有空格。 请按照以下步骤操作-
希望这会有所帮助。
str = "Example string"
String[] _arr = str.split("\\s");
String word = _arr[0];
在考虑上述代码之前,您需要在开头考虑多个空格和空格。
我不是 JAVA 编程的本地人,但我知道它具有字符串拆分功能。 而且您在问题中引用的参考有点复杂,而您可以很容易地实现所需的东西。
P.S. 以后如果你下定决心得到两个或三个单词,分割方法会更好(假设你已经处理了多个空格),否则 substring 会更好。
【讨论】:
一个简单的方法可以是:
System.out.println("Hello world!".split(" ")[0]);
【讨论】:
// Taking 'str' as your string
// To remove the first space(s) of the string,
str = str.trim();
int index = str.indexOf(" ");
String word = str.substring(0, index);
这只是众多方法中的一种。
str = str.replaceAll("\\s+", " "); // This replaces one or more spaces with one space
String[] words = str.split("\\s");
String first = words[0];
【讨论】:
在我看来,最简单的解决方案是找到用户希望将其截断的索引,然后从 0 调用 substring() 方法到他们想要的索引。将那个 = 设置为一个新字符串,你就有了他们想要的字符串。
如果要替换字符串,只需将原始字符串 = 设置为 substring() 方法的结果即可。
链接到 substring() 方法:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring(int,%20int)
【讨论】:
已经有 5 个非常好的答案,所以让我添加第六个。多样性是生活的调味品!
private static final Pattern FIRST_WORD = Pattern.compile("\\S+");
public static String firstWord(CharSequence text) {
Matcher m = FIRST_WORD.matcher(text);
return m.find() ? m.group() : "";
}
.split(...)[0] 类型答案的优势:
它直接执行所要求的操作,即“查找非空格字符的第一个序列”。所以自文档更明确。
在多个字符串上调用时效率更高(例如,用于批量处理大量字符串列表),因为正则表达式只编译一次。
它更节省空间,因为当我们只需要第一个单词时,它避免了不必要地创建一个包含每个单词引用的整个数组。
无需修剪字符串即可工作。
(我知道这可能为时已晚,对 OP 没有任何用处,但我将其留在这里作为未来读者的替代解决方案。)
【讨论】:
这样会更有效率
String str = "Hello world!";
int spaceInd = str.indexOf(' ');
if(spaceInd != -1) {
str = str.substring(0, spaceInd);
}
System.out.println(String.format("[%s]", str));
【讨论】: