【问题标题】:Search for a general sub-string within a string in Java [duplicate]在Java中的字符串中搜索一般子字符串[重复]
【发布时间】:2018-12-01 14:48:13
【问题描述】:

我是 Java 新手。我想问如何在给定字符串中搜索一般子字符串。

例如:-
在字符串 12345.67 我要搜索子字符串 .67
在字符串 1.00 中,我想搜索字符串 .00

我基本上想搜索部首(.)之后的字符串,前提是部首之后的字符数只有2

据我所知,搜索一般子字符串是不可能的,因此我请求您的帮助。

我希望将输入(存储在数据库中),浮点数打印成印度货币格式,即逗号分隔。
我什至查看了以前的各种帖子,但似乎没有一个对我有帮助,因为几乎每个人都未能产生小数点的正确输出

【问题讨论】:

  • 到目前为止你有什么尝试?
  • String test = "12345.67"; test = test.substring(); - 尝试了解不同的子字符串方法和 .contains() 方法。你会找到解决问题的办法。
  • “根据我的知识搜索一般子字符串是不可能的” 正则表达式呢?
  • 简单的indexOf怎么样
  • 发布您的代码。

标签: java string


【解决方案1】:

根据我的知识搜索一般子字符串是不可能的

所以你可以多学一点,这里String substring(int beginIndex)方法:

String str = "12345.67";
String res = str.substring(str.indexOf('.')); // .67

如果你想检查.后面只有2位数字:

String str = "12345.67";
String res = str.substring(str.indexOf('.') + 1); // 67
if(res.length() == 2)
    System.out.println("Good, 2 digits");
else
    System.out.println("Holy sh** there isn't 2 digits);

【讨论】:

  • @AlphaSniper 或lastIndexOf,如果你有多个.
【解决方案2】:

您可以使用 split 加上子字符串来实现您的目标

String test = "12345.67";
System.out.println(test.split("\\.")[1].substring(0,2));

在 split 函数中,您可以传递正则表达式,您可以使用它提供分隔符,并在子字符串函数中传递您要提取的字符数

【讨论】:

  • 嗨桑德!谢谢回复。作为一个新手,您能否详细说明您的代码,以便我更容易理解
  • 不需要子字符串,目前会失败。 -> StringIndexOutOfBounds
  • 因为在他提到的问题中,他希望控制激进后的字符数,子字符串将有助于实现这一目标。
【解决方案3】:

在@azro 提供的答案旁边,您还可以使用正则表达式:

String string = "12345.67";
Pattern ppattern = Pattern.compile("\\d+(\\.\\d{2})");
Matcher matcher = pattern.matcher(string);
if(matcher.matches()){
   String sub = matcher.group(1);
   System.out.println(sub);
}

哪些打印:

.67

【讨论】:

    【解决方案4】:
    String str = "12345.67";
    String searchString = "." + str.split("\\.")[1];
    if(str.contains(searchString)){
        System.out.println("The String contains the subString");
    }
    else{
        System.out.println("The String doesn't contains the subString");
    }
    

    【讨论】:

    • str.split("\\.")[1] 如果str 中不包含点,则会抛出
    • @ThomasAyoub 问题是“搜索部首 (.) 之后的字符串,前提是部首之后的字符数仅为 2。”。这意味着字符串会有一个点。
    • 我没有说你错了,我只是警告可能的错误:)
    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 2013-09-25
    • 2012-04-10
    • 2019-09-03
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多