Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.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 在Android Studio中获取数组中两个字符串之间的所有字符串_Java_Android_Arrays - Fatal编程技术网

Java 在Android Studio中获取数组中两个字符串之间的所有字符串

Java 在Android Studio中获取数组中两个字符串之间的所有字符串,java,android,arrays,Java,Android,Arrays,我正在寻找一种方法来获取数组中两个字符串之间的所有字符串 String[]list=inputOCR.split((?=\p{Space})”);=这就是我构建阵列的方式 字符串的顺序如下[其他、名称、中间、第一、最后、地址、单词、单词、单词、单词、单词、许可证等] 如何获取阵列中地址和许可证之间的所有字 更新:基于OCR扫描,阵列的索引不是固定的,因此我还必须在阵列中查找单词“地址”和“许可证”。啊,是的,索引可能会令人困惑!我有一些代码可以帮你。一旦你将单词分割成一个数组,你要做的就是找到单

我正在寻找一种方法来获取数组中两个字符串之间的所有字符串

String[]list=inputOCR.split((?=\p{Space})”);=这就是我构建阵列的方式

字符串的顺序如下[其他、名称、中间、第一、最后、地址、单词、单词、单词、单词、单词、许可证等] 如何获取阵列中地址和许可证之间的所有字


更新:基于OCR扫描,阵列的索引不是固定的,因此我还必须在阵列中查找单词“地址”和“许可证”。

啊,是的,索引可能会令人困惑!我有一些代码可以帮你。一旦你将单词分割成一个数组,你要做的就是找到单词的索引(位置),它是你搜索的开始和结束。在本例中,“地址”和“许可证”。然后,您可以在这些值之间循环以获得所需的单词

public class GetWords {

    public static void main(String[] args) {
        String inputOCR = "This contains some address random words used to test License should not be picked up";
        String[] list = inputOCR.split(" "); 

        int startPosition = getIndexOfWordInArray(list, "address") + 1;
        int endPosition = getIndexOfWordInArray(list, "license");

        for (int i = startPosition; i < endPosition; i++) {
            System.out.println(list[i]);
        }
    }

    public static int getIndexOfWordInArray(String[] list, String word) {
        int index = -1;

        for (int i = 0; i < list.length; i++) {
            if (list[i].equalsIgnoreCase(word)) {
                index = i;
                break;
            }
        }

        return index;
    }
}
公共类GetWords{
公共静态void main(字符串[]args){
String inputOCR=“这包含一些用于测试许可证的地址随机字,不应拾取”;
String[]list=inputOCR.split(“”);
int startPosition=getIndexOfWordinary(列表,“地址”)+1;
int endPosition=getIndexOfWordinary(列表,“许可证”);
对于(int i=startPosition;i
上面的代码将字符串拆分为空格,然后从索引中获取“地址”和“许可证”的位置。然后它在数组中循环,在这两个位置之间打印单词。代码在“address”的位置上添加了1,因为您想将其排除在外,它会在“license”的位置之前停止

您可以将它们添加到ArrayList中,而不是打印这些单词,ArrayList是一个可以动态增长的数组,具体取决于您在其中的投入量


我试图使代码尽可能简单且对初学者友好,但请询问是否仍然不清楚。

好的,如果我理解正确,我希望我做到了,这应该可以做到:

// Code begins with a splitted array so String[] list exists already
int address = 0; // this will determine where your Address is located in the array
int license = -1; // this will determine where license is located in the array

for (int i = 0; i < list.length; i++) {
    if (list[i].equals("Address"))
        address = i;
    else if (address != 0 && list[i].equals("License")) {
        license = i;
        break;    // loop can be left as everything else is unimportant
    }
}

String[] result = new String[license-address-1]; // This will throw an error on purpose if license and/or address were not in list
for (int i = address+1; i < license; i++)
    result[i-address-1] = list[i]; // actual copying
// Be happy with your result String[]
//代码以拆分的数组开头,因此字符串[]列表已经存在
int地址=0;//这将确定您的地址在阵列中的位置
int license=-1;//这将确定许可证在阵列中的位置
for(int i=0;i
您尝试过什么吗?基本的解决方案是在数组中循环并提取两个单词之间的所有内容。我正在尽力学习,但我现在陷入了困境,因为我不完全理解循环数组的逻辑。考虑到他是个初学者,我非常喜欢你的答案!哦,哇,真的很感激!您使初学者理解代码的逻辑变得尽可能简单。这么大的帮助!!非常感谢。我只是有个问题。将提取的单词放入textview时,textview.append(list[i])正确吗?或者我必须先将其分配给字符串,然后再将其设置为文本视图?@wazzar当然,您可以让它按您的意愿显示。我把它放在一个ViewModel中,这样它就可以在设备旋转时存活下来。追加时,还可以使用追加(“\n”)来添加换行符。祝你玩得开心,安卓系统的开发是一个相当冒险的过程。似乎无法让它工作。。但仍然在寻找问题。将尝试logAh,专业答案!很好-我真的很喜欢这里的优化。真的很有帮助!尝试使用你的代码,但我遇到了一个问题。它获取从地址后开始的字符串,但不会在“许可证”前停止。我该怎么解决这个问题?对不起!我的错。忘记在循环中插入中断。现在效果很好。感谢您和@Ewald帮助初学者走出困境!真的很感激!嗨@wazzar,由于时区的原因,我错过了这个。推动成功的好东西,这就是发展的意义所在。