【发布时间】:2020-07-22 19:34:52
【问题描述】:
我在 java 中有一个字符串变量有值:
String result="34.1 -118.33\n<!--ABCDEFG-->";
我希望我的最终字符串包含该值:
String result="34.1 -118.33";
我该怎么做?我是 Java 编程语言的新手。
谢谢,
【问题讨论】:
-
你有没有尝试过?
标签: java
我在 java 中有一个字符串变量有值:
String result="34.1 -118.33\n<!--ABCDEFG-->";
我希望我的最终字符串包含该值:
String result="34.1 -118.33";
我该怎么做?我是 Java 编程语言的新手。
谢谢,
【问题讨论】:
标签: java
你可以使用:
result = result.split("\n")[0];
【讨论】:
split("\n", 2)[0]; 提高性能。
假设您只想要\n(或任何其他文字字符串/字符)之前的所有内容,您应该使用indexOf() 和substring():
result = result.substring(0, result.indexOf('\n'));
如果要提取某个正则表达式之前的部分,可以使用split():
result = result.split(regex, 2)[0];
String result = "34.1 -118.33\n<!--ABCDEFG-->";
System.out.println(result.substring(0, result.indexOf('\n')));
System.out.println(result.split("\n", 2)[0]);
34.1 -118.33
34.1 -118.33
(显然\n 不是一个有意义的正则表达式,我只是用它来证明第二种方法也有效。)
【讨论】:
<pre> 标签用法 :)
有很多好的答案,但我会使用来自commons-lang 的StringUtils。我发现StringUtils.substringBefore() 比其他选项更具可读性:
String result = StringUtils.substringBefore("34.1 -118.33\n<!--ABCDEFG-->", "\n");
【讨论】:
使用正则表达式:
result = result.replaceAll("\n.*", "");
replaceAll() 使用正则表达式查找其目标,我已将其替换为“无” - 有效地删除了目标。
我通过正则表达式 \n.* 指定的目标表示“换行符和之后的所有内容”
【讨论】:
试试这个:
String result = "34.1 -118.33\n<!--ABCDEFG-->";
result = result.substring(0, result.indexOf("\n"));
【讨论】:
怎么样
Scanner scanner = new Scanner(result);
String line = scanner.nextLine();//will contain 34.1 -118.33
【讨论】:
nextLine()...但我的解决方案适用于所有分隔符,而不仅仅是换行符(和其他行分隔符)。
nextLine 就足够了:)
你可以使用result = result.replaceAll("\n","");
或
String[] split = result.split("\n");
【讨论】:
使用Scanner 并传入分隔符和原始字符串:
result = new Scanner(result).useDelimiter("\n").next();
【讨论】:
你可以使用StringTokenizer:
StringTokenizer st = new StringTokenizer("34.1 -118.33\n<!--ABCDEFG-->", "\n");
System.out.println(st.nextToken());
输出:
34.1 -118.33
【讨论】:
这是您可以做的最简单的方法,可以减少您的工作量。 只需将此函数粘贴到您的类中并在任何地方调用它:
你可以通过创建一个子字符串来做到这一点。
简单的例子在这里:
public static String removeTillWord(String input, String word) {
return input.substring(input.indexOf(word));
}
removeTillWord("Your String", "\");
【讨论】: