38

我在java中有一个字符串变量具有值:

String result="34.1 -118.33\n<!--ABCDEFG-->";

我希望我的最终字符串包含值:

String result="34.1 -118.33";

我怎样才能做到这一点?我是 Java 编程语言的新手。

谢谢,

4

10 回答 10

56

您可以使用:

result = result.split("\n")[0];
于 2013-08-13T22:12:31.803 回答
34

假设您只想要之前的所有内容\n(或任何其他文字字符串/字符),您应该使用indexOf()with 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不是一个有意义的正则表达式,我只是用它来证明第二种方法也有效。)

于 2013-08-13T22:06:41.107 回答
13

There are many good answers, but I would use StringUtils from commons-lang. I find StringUtils.substringBefore() more readable than the alternatives:

String result = StringUtils.substringBefore("34.1 -118.33\n<!--ABCDEFG-->", "\n");
于 2013-08-13T22:32:24.963 回答
5

使用正则表达式:

result = result.replaceAll("\n.*", "");

replaceAll()使用正则表达式查找其目标,我已将其替换为“无” - 有效地删除了目标。

我通过正则表达式指定的目标\n.*意味着“换行符和之后的所有内容”

于 2013-08-13T22:14:57.833 回答
3

怎么样

Scanner scanner = new Scanner(result);
String line = scanner.nextLine();//will contain 34.1 -118.33
于 2013-08-13T22:10:27.120 回答
3

您可以使用 result = result.replaceAll("\n","");

 String[] split = result.split("\n");
于 2013-08-13T22:15:19.000 回答
3

尝试这个:

String result = "34.1 -118.33\n<!--ABCDEFG-->";
result = result.substring(0, result.indexOf("\n"));
于 2013-08-13T22:07:28.233 回答
2

使用 aScanner并传入分隔符和原始字符串:

result = new Scanner(result).useDelimiter("\n").next();
于 2013-08-13T22:10:03.587 回答
0

您可以使用StringTokenizer

StringTokenizer st = new StringTokenizer("34.1 -118.33\n<!--ABCDEFG-->", "\n");
System.out.println(st.nextToken());

输出

34.1 -118.33
于 2019-05-22T20:46:41.563 回答
0

这是您可以做的最简单的方法,可以减少您的工作量。只需将此函数粘贴到您的类中并在任何地方调用它:

您可以通过创建子字符串来做到这一点。

简单的例子在这里:

public static String removeTillWord(String input, String word) {
    return input.substring(input.indexOf(word));
}

removeTillWord("Your String", "\");

于 2020-07-22T11:34:52.397 回答