Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.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中是否有与strpbrk等价的语言?如何使用它?_Java_C_String - Fatal编程技术网

Java中是否有与strpbrk等价的语言?如何使用它?

Java中是否有与strpbrk等价的语言?如何使用它?,java,c,string,Java,C,String,如果代码是这样的 const char str1[] = "abcde2fghi3jk4l"; const char str2[] = "34"; char *ret; ret = strpbrk(str1, str2); 如何在Java中复制相同的内容?在Java中没有直接的等价物 一种可能的解决办法是使用和 没有使用标准API的直接等价物 第一个解决方案:使用 第二种解决方案:使用标准Java8API,这相当冗长 String str1 = "abcde2fghi3jk4l";

如果代码是这样的

const char str1[] = "abcde2fghi3jk4l";
const char str2[] = "34";
char *ret;
ret = strpbrk(str1, str2);

如何在Java中复制相同的内容?

在Java中没有直接的等价物

一种可能的解决办法是使用和


没有使用标准API的直接等价物

第一个解决方案:使用

第二种解决方案:使用标准Java8API,这相当冗长

    String str1 = "abcde2fghi3jk4l";
    String str2 = "34";
    OptionalInt ret = str2.chars().map(c -> str1.indexOf(c)).min();
第三种解决方案:使用正则表达式,但str1不应包含任何正则表达式特殊字符,因此我不建议使用它

Matcher matcher = str2.matcher("["+str1+"]");
if(matcher.find()){
    ret = matcher.start();
}

首先,Java不是C,它不像C那样没有指针

我能想到的最接近您的代码的地方是:

final String str1 = "abcde2fghi3jk4l";
final String str2 = "34";
StringTokenizer st = new StringTokenizer(str1, str2);
String ret = st.hasMoreTokens() ? str1.substring(st.nextToken().length()) : null;
此代码使用JRE附带的

您可以自己尝试。

有以下功能:
StringUtils.indexOfAny(String str,String searchChars)
它将返回
searchChars
中第一个匹配字符的索引。希望这就是你想要的。 这是一个相当昂贵的方法,看看你是否可以使用一个更好的


依赖项为
org.apache.commons:commons-lang3

添加预期结果可能会导致help@jhamon
ret
是指向str1中作为str2一部分的任何字符的第一次出现的指针。goggle
java查找字符串中的字符串
可能重复的请添加预期结果,现在你的问题需要有人离开网站去弄清楚什么是
strpbrk()
doe我使用了问题中给出的示例信息,我相信用户将能够预测所需的字符检查以获得真正的生产解决方案。
Matcher matcher = str2.matcher("["+str1+"]");
if(matcher.find()){
    ret = matcher.start();
}
final String str1 = "abcde2fghi3jk4l";
final String str2 = "34";
StringTokenizer st = new StringTokenizer(str1, str2);
String ret = st.hasMoreTokens() ? str1.substring(st.nextToken().length()) : null;