将字符串转换为键值对,并在java中将其转换为一行
我想用冒号将字符串拆分成键和值对。在将字符串转换为键值对,并在java中将其转换为一行,java,string,hashmap,Java,String,Hashmap,我想用冒号将字符串拆分成键和值对。在convert函数中,我取了一行,将其分成键和值对 我想转换行变量。问题出在convert功能中。它没有按预期转换。它必须显示如下所示的预期输出。我不想将代码拆分为每个键值对的新行。我想在同一行用逗号表示 代码为 import java.util.HashMap; import java.util.Map; import com.google.common.base.Splitter; public class stack { public st
convert
函数中,我取了一行,将其分成键和值对
我想转换行
变量。问题出在convert
功能中。它没有按预期转换。它必须显示如下所示的预期输出。我不想将代码拆分为每个键值对的新行。我想在同一行用逗号表示
代码为
import java.util.HashMap;
import java.util.Map;
import com.google.common.base.Splitter;
public class stack {
public static Map<String, String> convert(String str, String SplitByWhat) {
String[] tokens = str.split(SplitByWhat);
Map<String, String> map = new HashMap<>();
for (int i = 0; i < tokens.length - 1;) {
map.put(tokens[i++], tokens[i++]);
}
return map;
}
public static void main(String[] args) {
String line = "Name : Md . Abdur Rab , CI : Marketing Petroleum Products , In : May 2013 , Hpc : President , Bd : April 14 , Bg : B + , Wd : October 10 , Sp : Quazi Manzida Rab , Bd : August 22 , Bg : B + , Ma : 689 Bara Moghbazar Dhaka - 1217 , Tel : ( 0 ) 935 1684 835 0818 , Mob : 01819 247 932 , Email : mdarab123@gmail.com";
Iterable<String> result = Splitter.on(" , ").trimResults().split(line);
for (String v : result) {
Map<String, String> response = convert(v, ":");
System.out.println(response);
}
}
}
{Name = Md . Abdur Rab}
{CI = Marketing Petroleum Products}
{In = May 2013}
{Hpc = President}
{Bd = April 14}
{Bg = B +}
{Wd = October 10}
{Sp = Quazi Manzida Rab}
{Bd = August 22}
{Bg = B +}
{Ma = 689 Bara Moghbazar Dhaka - 1217}
{Tel = ( 0 ) 935 1684 835 0818}
{Mob = 01819 247 932}
{Email = mdarab123@gmail.com}
预期产出
{Name = Md . Abdur Rab, CI = Marketing Petroleum Products, In = May 2013, Hpc = President, Bd = April 14, Bg = B +, Wd = October 10, Sp = Quazi Manzida Rab, Bd = August 22, Bg = B +, Ma = 689 Bara Moghbazar Dhaka - 1217, Tel = ( 0 ) 935 1684 835 0818, Mob = 01819 247 932, Email = mdarab123@gmail.com}
每次调用
convert()
并将其打印出来时,您都会创建一个新的映射,因此,您将为以“,”分隔的每一行打印一个映射
您想做的是以下几点:
public static void main(String[] args) {
String line = ...
Iterable<String> result = Splitter.on(" , ").trimResults().split(line);
Map<String, String> response - new HashMap<>();
for (String v : result) {
Entry<String, String> entry = convert(v, ":");
response.put(entry.getKey(), entry.getValue());
}
System.out.println(response);
}
publicstaticvoidmain(字符串[]args){
字符串行=。。。
Iterable result=Splitter.on(“,”).trimResults().split(行);
映射响应-新建HashMap();
for(字符串v:结果){
条目=转换(v,“:”);
response.put(entry.getKey(),entry.getValue());
}
System.out.println(响应);
}
其中convert()
返回类型Entry
请参阅:您好,我修改了您的代码以完全打印您想要的内容,请尝试以下代码:
public static Map<String, String> convert(String str, String SplitByWhat) {
String[] tokens = str.split(SplitByWhat);
Map<String, String> map = new HashMap<>();
for (int i = 0; i < tokens.length - 1;) {
map.put(tokens[i++], tokens[i++]);
}
return map;
}
public static void main(String[] args) {
String line = "Name : Md . Abdur Rab , CI : Marketing Petroleum Products , In : May 2013 , Hpc : President , Bd : April 14 , Bg : B + , Wd : October 10 , Sp : Quazi Manzida Rab , Bd : August 22 , Bg : B + , Ma : 689 Bara Moghbazar Dhaka - 1217 , Tel : ( 0 ) 935 1684 835 0818 , Mob : 01819 247 932 , Email : mdarab123@gmail.com";
Iterable<String> result = Splitter.on(" , ").trimResults().split(line);
String response = "";
for (String v : result) {
response += convert(v, ":");
}
response = response.replace("{","");
response = response.replace("}",", ");
response = "{" + response + "}";
System.out.println(response);
}
publicstaticmap转换(stringstr,stringsplitbywhat){
String[]tokens=str.split(SplitByWhat);
Map Map=newhashmap();
对于(int i=0;i
祝你玩得开心,我希望我能帮助你 每次都初始化映射,因此在循环之前创建一个映射,并在循环中添加条目,然后移动
System.out.println(响应)代码>在循环之外。@YCF_L感谢您的评论,但不起作用,因为我还需要键值对来执行此代码的进一步操作。先生,这里有一个问题。当我输入response.put(convert(v,“:”)时,
显示预期的2个参数,但找到1个
。我该怎么办?