Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何搜索子字符串_Java_String_Loops - Fatal编程技术网

Java 如何搜索子字符串

Java 如何搜索子字符串,java,string,loops,Java,String,Loops,我在字符串中寻找像“tip”和“top”这样的模式——长度为3,以“t”开头,以“p”结尾。目标是返回一个字符串,其中所有这些单词的中间字母都消失了。例如,“tipXtap”产生“tpXtp” 到目前为止,我考虑过使用递归和replace()方法,但不确定这是否是解决这个问题的最佳方法 以下是我迄今为止的代码: String result = ""; if(str.length() < 3) return str; for(int i = 0; i <= str.le

我在字符串中寻找像“tip”和“top”这样的模式——长度为3,以“t”开头,以“p”结尾。目标是返回一个字符串,其中所有这些单词的中间字母都消失了。例如,“tipXtap”产生“tpXtp”

到目前为止,我考虑过使用递归和replace()方法,但不确定这是否是解决这个问题的最佳方法

以下是我迄今为止的代码:

String result = ""; 
if(str.length() < 3) 
    return str; 

for(int i = 0; i <= str.length() - 2; i++){ 
    if(str.charAt(i) == 't' && str.charAt(i + 2) == 'p'){
       str.replaceAll(str.substring(i + 1, i + 2), ""); 
    } 
    return str; 
}

return str; 
字符串结果=”;
如果(str.length()<3)
返回str;
对于(int i=0;i使用以下Java代码:

String str = "tipXtap";
str = str.replaceAll("t.p", "tp");
这将使用和函数。
(点)字符是执行此操作的一种方法

  • 将字符串转换为字符数组

  • 使用if条件验证第一个字母中的第一个字母和第三个字母。首先查看字符串中的字符是否为T,然后检查两个字符之间的字符是否为“p”。必须在遍历字符数组的循环中执行此操作

  • 如果验证条件为true,请删除中间的元素。您必须在char数组中移动该元素

  • 将字符数组转换为字符串并返回它


  • 希望这有帮助。

    下面是一个使用正则表达式解决此问题的JavaScript解决方案:

    foo = 'tipXtop'
    foo.replace(/t\wp/g, 'tp')
    
    \w
    regex运算符匹配单词字符,如a-z、a-z、0-9或x


    g
    regex标志将匹配字符串中regex的所有实例。

    regex将帮助您;)是的,我尝试将regex与replace()或replaceAll()方法结合使用。无法理解。您希望解决方案使用哪种编程语言?@ShivanshuGoyal屏幕上有一个
    java
    标记question@allmvp96-请尝试以描述性的方式为您的问题命名。想一想如何给它命名,以便有兴趣在Java中帮助您解决字符串模式识别问题的人能够看到它并知道如何单击它。此外,请包括您迄今为止的代码,以及您尝试过的内容和遇到的问题的描述。如果您还没有尝试过任何东西,那么发布堆栈溢出通常还为时过早。是的,def可以工作。但是我认为有一个更简单的方法来解决这个问题。谢谢你的帮助。是的,我也这么认为。只是想了个主意:)啊,我不知道那个小事实。我现在就试试。请记住,您需要捕获
    replaceAll
    @Andreas的返回值。谢谢,fixedQuestion是针对Java的(请参阅标记)。我知道,但这是一个正确的JavaScript解决方案。你没有理由投反对票。