Split(new char[]{',','*'})

   string testData="123*123123,1,2";

   string[] strs = testData.Split(new char[]{',','*'});//以,和*号进行分割。

123

123123

1

2

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段 C 语言代码定义了一个名为 `nGetAddData` 的函数,接受四个参数:一个字符数组指针 `buf`,一个字符数组指针 `key`,一个字符数组指针 `data`,以及两个字符类型的变量 `split1` 和 `split2`。函数的作用是从 `buf` 中获取指定 `key` 对应的数据 `data`,并使用 `split1` 和 `split2` 作为分隔符。 具体来说,函数会先将 `split2` 存储到名为 `splitTmp` 的字符数组中,然后将 `splitTmp` 与 `buf` 连接起来,以确保 `buf` 的末尾是一个 `split2` 分隔符。 接着,函数使用 `strstr` 函数在 `buf` 中查找 `key` 的位置,如果找到了,则使用 `strchr` 函数在 `key` 后面查找第一个分隔符 `split1` 的位置,并将其保存到 `pdata` 变量中。如果 `pdata` 不为 NULL,则再次使用 `strchr` 函数在 `pdata` 后面查找第二个分隔符 `split2` 的位置,并将其保存到 `psplit` 变量中。 如果 `psplit` 为 NULL,则说明附加数据格式不符合要求,函数使用 `sprintf` 函数输出一条错误信息,并返回 1。 如果 `psplit` 不为 NULL,则说明成功获取了数据,函数使用 `strncpy` 函数将数据从 `pdata` 中复制到 `data` 中,并返回 0。最后,函数使用 `sprintf` 函数输出成功获取的数据。 以下是我给出的 Java 代码和注释: ```java /** * 从字符串中获取指定 key 对应的数据 * @param buf 待解析的字符串 * @param key 要获取的数据的 key * @param data 解析后得到的数据 * @param split1 第一层分隔符 * @param split2 第二层分隔符 * @return 如果提取成功,返回 0;否则返回 1 */ public static int nGetAddData( String buf, String key, String data, char split1, char split2) { // 初始化变量 String pkey = null; String pdata = null; String psplit = null; char[] splitTmp = new char[2]; Arrays.fill(splitTmp, '\0'); splitTmp[0] = split2; // 在 buf 中查找 key 的位置 pkey = buf.contains(key) ? buf.substring(buf.indexOf(key)) : null; if (pkey != null) { // 在 key 后面查找第一个分隔符 split1 pdata = pkey.contains(String.valueOf(split1)) ? pkey.substring(pkey.indexOf(split1) + 1) : null; if (pdata != null) { // 在 pdata 后面查找第二个分隔符 split2 psplit = pdata.contains(String.valueOf(split2)) ? pdata.substring(pdata.indexOf(split2)) : null; if (psplit == null) { // 如果查找失败,输出错误信息 System.out.printf("附加数据格式不符,%s,%s\n", key, buf); return 1; } else { // 如果查找成功,将数据保存到 data 中 data = pdata.substring(0, Math.abs(pdata.indexOf(split1) - psplit.length())); System.out.printf("key=%s,data=%s\n", key, data); return 0; } } } // 如果查找失败,返回错误码 System.out.printf("附加数据格式不符,%s,%s\n", key, buf); return 1; } ``` 需要注意的是,Java 中的字符串是不可变的,因此不能直接修改 `data` 的值,而需要将结果保存到一个新的字符串中。另外,Java 中没有 C 语言中的指针,因此需要使用字符串的 `substring` 方法来截取子串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值