【问题标题】:Checking of String if it has this specific value [closed]检查字符串是否具有此特定值[关闭]
【发布时间】:2016-07-19 08:43:45
【问题描述】:

所以我有这个问题。我有一个字符串标记,看起来像这样jdK10ds3,有时还有jdK10ds3TEST。我想检查字符串是否从最后一个开始有TEST。我尝试使用string.contains(),但是当它在中间时它可以检测到字符串,就像这样jdK1TESTds3

如何检查字符串最后是否有TEST(忽略大小写)以及如何解析字符串以删除最后一个TESTTEST 有可能像 jdK1TESTds3TEST 这样翻倍。

【问题讨论】:

  • 如果值是固定的,您可以检查字符串长度。
  • 我不完全理解这个要求。但是您可以检查 TEST 是否在此条件下出现在最后且仅出现一次。 if(str.indexOf("TEST") == str.length() - 4))
  • 使用 indexOf 就可以了

标签: java android string


【解决方案1】:

使用:String.endsWith() 怎么样?首先将字符串设为大写。

如果为真,String.substring()length - 4

完整代码:

String string = "jdK10ds3TEST"; // jdK10TESTds3TEST / jdK10TESTds3
if(string.toUpperCase().endsWith("TEST")) {
    string = string.substring(0, string.length() -4);
}
System.out.println(string);

【讨论】:

    【解决方案2】:

    正则表达式是你的朋友:

    public static void main(String[] args) throws Exception {
        String s1 = "jdK1TESTds3TEST";
        System.out.println(s1.replaceAll("(?i)(.*)TEST$", "$1"));
    }
    

    O/P:jdK1TESTds3

    上面的代码替换了最后一个 TEST(如果存在)。添加(?i) 修饰符使其不区分大小写。

    【讨论】:

    • Woudl 也会删除以下字符串中的 TEST:“jdK10TESTds3”?
    • @cherry-wave - 不,不会
    • 在哪里添加(?i) 修饰符?请显示代码
    • @SecretCoder - 编辑了我的答案.. 请考虑对正则表达式进行一些研究
    【解决方案3】:

    此代码检查“TEST”是您输入字符串的一部分。如果存在则删除它并打印字符串。

    public static void main(String[] args) {
            String test = "jdK10TESTds3";
            String test2 = "jdK10ds3TEST";
            boolean status = false;
            System.out.println(test.substring(test.length() - 4, test.length()).equalsIgnoreCase("TEST"));
            System.out.println(test2.substring(test2.length() - 4, test2.length()).equalsIgnoreCase("TEST"));
            status = test2.substring(test2.length() - 4, test2.length()).equalsIgnoreCase("TEST");
            //Remove the test if it exists
            if (status) {
                test2 = test2.substring(0, test2.length() - 4);
                System.out.println(test2);
            }
    }
    

    【讨论】:

      【解决方案4】:

      这是你要求的吗?

          package org.app.temputil;
      
          public class Test2 {
      
              public static void main(String[] args) {
                  String testString = "jdK1TESTds3TEST";
                  System.out.println("Does is end with TEST(ignoring case)?" + testString.toLowerCase().endsWith("test"));
                  System.out.println("After removing the last 'TEST' = " + testString.substring(0, testString.toLowerCase().lastIndexOf("test")));
      
              }
          }
      

      是否以 TEST 结尾(忽略大小写)?true

      删除最后一个 'TEST' = jdK1TESTds3

      【讨论】:

        【解决方案5】:

        试试这个,

        public void checkData()
        {
            String resultString = "jdK10TESTds3TEST";
        
            if(resultString.lastIndexOf("TEST") == resultString.length() - 4)
            {
                resultString = resultString.substring(0, resultString.length() - 4);
                System.out.println("Contains == >" + resultString);
            }
            else
            {
                System.out.println("Not Contain");
            }
        }
        

        【讨论】:

          【解决方案6】:

          有一种方法可以做到这一点, 如何检查字符串最后是否有“TEST”(忽略大小写)

          // find all occurrences backward
          String word= "TEST";
          String text = "jdK10ds3TEST";
          i = text.lastIndexOf(word);
          

          现在获取剩余的字符串,

          String subtext=text.subString(0,i-1);
          

          【讨论】:

          • 如果字符串是“jdK10TESTds3”,那就不行了
          • OP 的要求是仅当它位于单词末尾时才查找/删除它。
          猜你喜欢
          • 1970-01-01
          • 2013-01-01
          • 1970-01-01
          • 2023-04-01
          • 2018-09-28
          • 2018-03-12
          • 2022-08-12
          • 2022-06-14
          • 1970-01-01
          相关资源
          最近更新 更多