如何在java中的特定字符之后修剪字符串

时间:2013-08-13 22:05:32

标签: java

我在java中有一个字符串变量,其值为:

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

我希望我的最后一个字符串包含值:

String result="34.1 -118.33";

我该怎么做?我是java编程语言的新手。

谢谢,

10 个答案:

答案 0 :(得分:36)

您可以使用:

result = result.split("\n")[0];

答案 1 :(得分:26)

假设您只想要\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不是一个有意义的正则表达式,我只是用它来证明第二种方法也有效。)

答案 2 :(得分:11)

有许多好的答案,但我会使用StringUtils中的commons-lang。我发现StringUtils.substringBefore()比其他选择更具可读性:

String result = StringUtils.substringBefore("34.1 -118.33\n<!--ABCDEFG-->", "\n");

答案 3 :(得分:5)

使用正则表达式:

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

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

正则表达式\n.*指定的目标意味着“新行字符和后面的所有内容”

答案 4 :(得分:3)

怎么样

Scanner scanner = new Scanner(result);
String line = scanner.nextLine();//will contain 34.1 -118.33

答案 5 :(得分:3)

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

 String[] split = result.split("\n");

答案 6 :(得分:2)

试试这个:

String result = "34.1 -118.33\n<!--ABCDEFG-->";
result = result.substring(0, result.indexOf("\n"));

答案 7 :(得分:2)

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

result = new Scanner(result).useDelimiter("\n").next();

答案 8 :(得分:0)

您可以使用 StringTokenizer

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

输出

34.1 -118.33

答案 9 :(得分:0)

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

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

简单示例如下:

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        String table[] = { " ", ".+@$", "abc", "def", "ghi", "jkl" , "mno", "pqrs" , "tuv", "wxyz" };
        String str = sc.nextLine();
        int cn =(int)str.charAt(0);
        System.out.println(table[cn]);
    }
}