Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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 - Fatal编程技术网

Java 在循环中剪切字符串的特定部分

Java 在循环中剪切字符串的特定部分,java,string,Java,String,我有这样一个字符串: String content = "{"begin"bf3b178a70.jpg","end",....},{"id":,"f06190e8938.jpg","end",....}" bf3b178a70.jpg f06190e893.png url.com/image/bf3b178a70.jpg url.com/image/f06190e893.png 我想剪下像这样的图像ID: String content = "{"begin"bf3b178a70.jpg",

我有这样一个字符串:

String content = "{"begin"bf3b178a70.jpg","end",....},{"id":,"f06190e8938.jpg","end",....}"
bf3b178a70.jpg
f06190e893.png
url.com/image/bf3b178a70.jpg
url.com/image/f06190e893.png
我想剪下像这样的图像ID:

String content = "{"begin"bf3b178a70.jpg","end",....},{"id":,"f06190e8938.jpg","end",....}"
bf3b178a70.jpg
f06190e893.png
url.com/image/bf3b178a70.jpg
url.com/image/f06190e893.png
在那之后,我想用一个新的url组成图像ID,如下所示:

String content = "{"begin"bf3b178a70.jpg","end",....},{"id":,"f06190e8938.jpg","end",....}"
bf3b178a70.jpg
f06190e893.png
url.com/image/bf3b178a70.jpg
url.com/image/f06190e893.png
我从substring()开始剪切第一部分,从
content.split(““id”)但是我对字符串数组和普通字符串有问题。我使用带有for循环的字符串数组,因为真正的字符串非常长


有人能帮我吗?

乍一看,您的字符串的格式好像是。如果是这种情况,您可以使用或上列出的许多其他解析器中的一个来分解它,或者只需遵循它们给出的语法图;简单的字符串切分是不可取的,因为JSON不是一个字符串

我现在假设您正在接收一个对象的JSON数组(方括号,逗号分隔),并且您正在从一个文件或一个Web服务读取数据,其中任何一个都提供了
InputStream
。如果有其他内容,可以将
读取器
或普通的
字符串
传递给
JSONTokener
构造函数,或者如果有字节数组,可以将其包装在
ByteArrayInputStream
中并传递

我手头没有JDK,甚至无法检查它是否编译:-),但这里是

import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import org.json.*;

public class ImageListProcessor
{
    public static ArrayList<URL> processList(InputStream toProcess, URL baseURL)
        throws JSONException, MalformedURLException
    {
        JSONTokener toProcessTokener = new JSONTokener(toProcess);
        JSONObject toProcessResponse = new JSONObject(toProcess);
        if (!toProcessResponse.isNull("error")) {
            // it's an error response, probably a good idea to get out of here
            throw new JSONException("Response contains error: " + toProcessResponse.get("error"));
        }
        JSONArray toProcessArray = toProcessResponse.getJSONArray("items");
        int len = toProcessArray.length();
        ArrayList<URL> result = new ArrayList<URL>(len);
        for(int i = 0; i < len; i++) {
            JSONObject imageRecord = toProcessArray.getJSONObject(i);
            String imagePath = imageRecord.getString("image");
            // if you want to remove the date portion of the path:
            imagePath = imagePath.substring(1 + imagePath.lastIndexOf('/'));
            URL combinedURL = new URL(baseURL, imagePath);
            result.add(combinedURL);
        }
        return result;
    }
}
import java.io.InputStream;
导入java.net.URL;
导入java.util.ArrayList;
导入org.json.*;
公共类ImageListProcessor
{
公共静态ArrayList进程列表(InputStream-TopProcess,URL baseURL)
抛出JSONException,MalformedUrlexException
{
JSONTokener-toProcessTokener=新的JSONTokener(toProcess);
JSONObject toProcessResponse=新的JSONObject(toProcess);
如果(!toProcessResponse.isNull(“错误”)){
//这是一个错误响应,也许是离开这里的好主意
抛出新的JSONException(“响应包含错误:+toProcessResponse.get(“错误”));
}
JSONArray toProcessArray=toProcessResponse.getJSONArray(“项”);
int len=toProcessArray.length();
ArrayList结果=新的ArrayList(len);
对于(int i=0;i
尝试以下方法:

import java.util.regex.*;

public class ReplaceDemo {
    public static void main(String[] args) {
    String input = 
              "User clientId=23421. Some more text clientId=33432. This clientNum=100";

    Pattern p = Pattern.compile("(clientId=)(\\d+)");
    Matcher m = p.matcher(input);

    StringBuffer result = new StringBuffer();
    while (m.find()) {
        System.out.println("Masking: " + m.group(2));
        m.appendReplacement(result, m.group(1) + "***masked***");
    }
    m.appendTail(result);
    System.out.println(result);
}
}

您的字符串看起来不正确看起来很像您的字符串是JSON格式的(虽然您在这里实际键入的不是有效的JSON),在这种情况下,只需使用标准的JSON解析库,如JSONObject或GSON或Jacksoni,就可以从字符串中删除不相关的内容是的,您的“字符串”是JSON(尽管有点乱码)。将JSON解析为一个映射(JSON对象),数据将很容易访问。您能否发布一段代码片段,说明如何正确使用JSON解析器这是一个未切割的样本。{“id”:2683,“up”:4,“down”:2,“created”:140,“image”:“2014\/08\/12\/79092c524b9fb94e”‌​.jpg,“拇指”:“2014\/08\/12\/79092c524b9fb94e.jpg”,“全尺寸”:“来源”:“使用”‌​r“:”,“mark”:6}@cekayyy,我假设您正在接收这些对象的JSON数组(用方括号括起来的逗号分隔的列表),并据此进行了设计。很好!谢谢你,杰弗里!如果我编辑json字符串的第一行,效果很好。只有一个问题仍然存在。字符串来自一个web服务,以:{“atEnd”:false,“atStart”:true,“error”:null,“items”:开头,然后用[{“id”:270842,…]开始方括号。JsonArray出现的异常必须以[.这意味着我不能使用JsonArray进行此操作?@cekayy,这是JsonArray周围的一个外部JsonObject。我会更新我的答案。好的,好主意,但我得到一个例外,JsonObject[“image”]没有找到。