Java 如果没有';不存在
假设我有一根像下面这样的线Java 如果没有';不存在,java,arrays,string,Java,Arrays,String,假设我有一根像下面这样的线 String s1 = "test1=1&test2=2&test3=&test4=4"; 请注意字符串S1中的test3参数,因为它没有任何值 String [] splitS1 = s1.split("\\&"); for (int i = 0; i < splitS1.length; i++) { String[] params = splitS1[i].split("="); System.out.pri
String s1 = "test1=1&test2=2&test3=&test4=4";
请注意字符串S1中的test3参数,因为它没有任何值
String [] splitS1 = s1.split("\\&");
for (int i = 0; i < splitS1.length; i++) {
String[] params = splitS1[i].split("=");
System.out.println("Attribute:"+params[0]+" Value : "+params [1]);
}
但我知道我们无法扩展阵列。这里可以做什么
谢谢 创建一个新的字符串数组,并将拆分结果复制到其中
String[] cpy = new String[2];
for(int i=0;i<cpy.length;i++){
cpy[i] = params[i];
}
params = cpy;
String[]cpy=新字符串[2];
对于(int i=0;i创建一个新的字符串数组,并将拆分结果复制到其中
String[] cpy = new String[2];
for(int i=0;i<cpy.length;i++){
cpy[i] = params[i];
}
params = cpy;
String[]cpy=新字符串[2];
对于(int i=0;i采用一个参数的split
方法丢弃尾随的空标记。这里,这导致params
的长度只有一个
用户,并传递一个负数limit
,以确保获得一个长度与实际存在的令牌数匹配的数组:2
String[] params = splitS1[i].split("=", -1);
然后,您不必创建另一个数组;首先,假设存在=
,您将获得一个大小为2
的数组。采用一个参数的split
方法将丢弃尾随的空标记。在这里,这将导致参数的长度仅为一个
用户,并传递一个负数limit
,以确保获得一个长度与实际存在的令牌数匹配的数组:2
String[] params = splitS1[i].split("=", -1);
然后,您不必创建另一个数组;首先,假设存在=
,您将获得一个大小为2
的数组。最简单的事情是测试数组长度:
String splitS1 = s1.split("\\&");
for (int i = 0; i < splitS1.length; i++) {
String[] params = splitS1[i].split("=");
System.out.println(
"Attribute: " + params[0] +
" Value : " + (params.length < 1 ? "<no value>" : params[1]));
}
最简单的方法是测试数组长度:
String splitS1 = s1.split("\\&");
for (int i = 0; i < splitS1.length; i++) {
String[] params = splitS1[i].split("=");
System.out.println(
"Attribute: " + params[0] +
" Value : " + (params.length < 1 ? "<no value>" : params[1]));
}
创建一个表示参数的类,该类包含其名称和值,并解析字符串:
public final class Parameter {
private final String name;
private final String value;
public Parameter(String name, String value) {
this.name = name;
this.value = value;
}
public static Parameter parse(String s) {
String[] parts = s.split("=");
String name = parts[0];
String value = "";
if (parts.length > 1) {
value = parts[1];
}
return new Parameter(name, value);
}
public String getName() {
return name;
}
public String getValue() {
return value;
}
// add more behavior if needed.
}
现在你可以做了
for (int i = 0; i < splitS1.length; i++) {
Parameter param = Parameter.parse(splitS1[i]);
System.out.println("Parameter:" + param.getName() + " = " + param.getValue());
}
for(int i=0;i
创建一个表示参数的类,其名称和值用于解析字符串:
public final class Parameter {
private final String name;
private final String value;
public Parameter(String name, String value) {
this.name = name;
this.value = value;
}
public static Parameter parse(String s) {
String[] parts = s.split("=");
String name = parts[0];
String value = "";
if (parts.length > 1) {
value = parts[1];
}
return new Parameter(name, value);
}
public String getName() {
return name;
}
public String getValue() {
return value;
}
// add more behavior if needed.
}
现在你可以做了
for (int i = 0; i < splitS1.length; i++) {
Parameter param = Parameter.parse(splitS1[i]);
System.out.println("Parameter:" + param.getName() + " = " + param.getValue());
}
for(int i=0;i
你可以做这样的事情
String s1 = "test1=1&test2=2&test3=&test4=4";
String[] splitS1 = s1.split("\\&");
for (int i = 0; i < splitS1.length; i++) {
String[] params = splitS1[i].split("=");
String[] para=new String[2];
if(params.length==1) {
para[0]=params[0];
System.out.println("Attribute:"+para[0]+" Value : "+para [1]);
}
else{
System.out.println("Attribute:"+params[0]+" Value : "+params [1]);
}
}
你可以做这样的事情
String s1 = "test1=1&test2=2&test3=&test4=4";
String[] splitS1 = s1.split("\\&");
for (int i = 0; i < splitS1.length; i++) {
String[] params = splitS1[i].split("=");
String[] para=new String[2];
if(params.length==1) {
para[0]=params[0];
System.out.println("Attribute:"+para[0]+" Value : "+para [1]);
}
else{
System.out.println("Attribute:"+params[0]+" Value : "+params [1]);
}
}
优雅!不知道极限参数。优雅!不知道极限参数。