【问题标题】:How to trim a string after a specific character in java如何在java中的特定字符之后修剪字符串
【发布时间】:2020-07-22 19:34:52
【问题描述】:

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

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

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

String result="34.1 -118.33";

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

谢谢,

【问题讨论】:

  • 你有没有尝试过?

标签: java


【解决方案1】:

你可以使用:

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

【讨论】:

  • 如果您只对第一个元素感兴趣,可以split("\n", 2)[0]; 提高性能。
  • @jlordo 甜!我不知道第二个可选参数 - 谢谢!
【解决方案2】:

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

【讨论】:

  • 感谢您在 StackOverflow 上教我一个很好的 &lt;pre&gt; 标签用法 :)
  • 非常感谢您的帮助。
【解决方案3】:

有很多好的答案,但我会使用来自commons-langStringUtils。我发现StringUtils.substringBefore() 比其他选项更具可读性:

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

【讨论】:

    【解决方案4】:

    使用正则表达式:

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

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

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

    【讨论】:

      【解决方案5】:

      试试这个:

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

      【讨论】:

        【解决方案6】:

        怎么样

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

        【讨论】:

        • 从未想过在这种情况下使用nextLine()...但我的解决方案适用于所有分隔符,而不仅仅是换行符(和其他行分隔符)。
        • @gparyani 是的,但在这种情况下nextLine 就足够了:)
        【解决方案7】:

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

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

        【讨论】:

          【解决方案8】:

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

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

          【讨论】:

            【解决方案9】:

            你可以使用StringTokenizer

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

            输出

            34.1 -118.33
            

            【讨论】:

              【解决方案10】:

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

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

              简单的例子在这里:

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2015-02-16
                • 2013-08-26
                • 1970-01-01
                • 1970-01-01
                • 2014-11-27
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多