【问题标题】:How to remove all characters before a specific character in Java?如何删除Java中特定字符之前的所有字符?
【发布时间】:2017-04-16 02:23:01
【问题描述】:

我有一个字符串,我通过一个 html 表单获取值,所以当我得到它来自 URL 的值时,我想删除特定字符之前的所有字符,即 =,我也想删除这个字符。我只想保存= 之后的值,因为我需要从变量中获取该值..

编辑:我也需要删除=,因为我试图在它之后获取字符串中的字符/值...

【问题讨论】:

  • @ItamarGreen 我不知道该怎么做,因为我是初学者,所以我在互联网上搜索了它,我没有找到任何我能理解的东西,所以如果你知道帮助请我明白了
  • 你在 google 上搜索过你的头衔吗?
  • split() 怎么办,只使用第二个值?
  • @ItamarGreen 是的,但解释很差
  • 你真正想要的是解析查询参数。看到这个问题:stackoverflow.com/questions/13592236/…

标签: java string replace


【解决方案1】:

你可以使用.substring():

String s = "the text=text";
String s1 = s.substring(s.indexOf("=")+1);
s1.trim();

那么s1 包含原始字符串中= 之后的所有内容。

s1.trim()

.trim() 删除字符串的第一个字符(不是空格,如字母、数字等)之前的空格(前导空格),并删除最后一个字符之后的空格(尾随空格)。

【讨论】:

    【解决方案2】:

    虽然有很多答案。这是一个正则表达式示例

    String test = "eo21jüdjüqw=realString";
    test = test.replaceAll(".+=", "");
    System.out.println(test);
    
    // prints realString
    

    解释:

    .+ 匹配任何字符(行终止符除外)
    + 量词 - 匹配一次到无限次,尽可能多次,根据需要返回(贪婪)
    = 匹配字符 = 字面意思(区分大小写)

    这也是来自https://regex101.com/ 的阴暗复制粘贴,您可以在其中尝试正则表达式。

    【讨论】:

    • @ShariqMusharaf 这是我随机选择的。变量 test 是您的 html 字符串。
    【解决方案3】:

    您可以将字符串从 = 拆分并分离到数组中,并获取您在 = 符号之后指定的数组的第二个值 例如:

    String CurrentString = "Fruit = they taste good"; String[] separated = CurrentString.split("="); separated[0]; // this will contain "Fruit" separated[1]; //this will contain "they teste good"

    then separator[1] 包含原始字符串中 = 之后的所有内容。

    【讨论】:

    • 我也需要删除“=”
    • 是的,它会删除“=”并将其存储在您完全想要的分隔[1]中。
    • 不是一切!试试这个Op = 4 = 2 + 2
    【解决方案4】:

    也许可以在 URL 字符串中找到第一次出现的字符。例如:

    String URL = "http://test.net/demo_form.asp?name1=stringTest";
    
    int index = URL.indexOf("=");
    

    然后,根据索引拆分字符串

    String Result = URL.substring(index+1); //index+1 to skip =
    

    字符串结果现在包含值:stringTest

    【讨论】:

    • @sha 如果您不想包含“=”,只需将索引增加 1。
    【解决方案5】:

    我知道这是关于Java 的问题,但这似乎也是Kotlin 的第一个搜索结果,因此您应该知道Kotlin 在这种情况下具有String.substringAfter(delimiter: String, missingDelimiterValue: String = this) 扩展名。

    它的实现是:

    val index = indexOf(delimiter)
    return if (index == -1) 
        missingDelimiterValue 
    else 
        substring(index + delimiter.length, length)
    

    【讨论】:

      【解决方案6】:

      如果您使用Apache Commons Lang3 库,还可以使用StringUtils 实用程序类的substringAfter 方法。

      官方文档是here

      例子:

      String value = StringUtils.substringAfter("key=value", "=");   
      
      // in this case where a space is in the value (e.g. read from a file instead of a query params)
      String value = StringUtils.trimToEmpty(StringUtils.substringAfter("key = value", "="));   // = "value"
          
      

      它管理您的值在第一次出现时可以包含“=”字符的情况。

      如果您的键和值也包含“=”字符,它将不起作用(但其他方法也是如此);在 URL 查询参数中,无论如何都应该转义这样的字符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-05
        • 2015-01-26
        • 1970-01-01
        • 2016-07-06
        • 2016-10-15
        • 2010-10-28
        相关资源
        最近更新 更多