我试图从一个长字符串中提取 2 条特定的数据。这两个值都在“=”之后,但问题是我不能仅仅在每个“=”上拆分数据,因为我需要的一些数据也包含它们:
example: "{col1=RND393JKDN, col2=DJW//39ndo==8}
desired format: "RND393JKDN, DJW//39ndo==8"
下面是我为修复而编写的代码,但另一部分是我不确定将输入多少列,因此我必须能够处理未知数量的列,例如: "{col1=value1, col2=value2, col3=value3}"
for(int i = 0; i < finalResult.size(); i+=modval) {
//below forces the result to get stored in below variable as a String type
String resulttemp = finalResult.get(i).toString();
//below is only for
for(int z = 0; z < columnHeaders.size(); z++) {
String newStr=finalResult.get(i).replaceAll("\\[", "").replaceAll("\\]", "").replaceAll("\\{", "").replaceAll("\\}", "");
String newStr2;
String newStr3;
String find = "=";
newStr = (newStr.substring(newStr.indexOf(find)+find.length()));
newStr2 = (newStr.substring(newStr.indexOf(find)+find.length()));
newStr3 = (newStr2.substring(newStr.indexOf(find)+find.length()));
pw.printf("%s\n", newStr, newStr3);
}
}
如果可能,请考虑更改输入格式。如果没有,这是一种天真而简单的方法。
import java.util.List;
import java.util.ArrayList;
public class HelloWorld
{
public static void main(String[] args)
{
String s = "{col1=RND393JKDN, col2=DJW//39ndo==8}";
s=s.substring(1, s.length()-1); //remove {}
s.replaceAll(" ", "");
String[] explode = s.split(",");
List<String> result = new ArrayList<String>();
for (int i=0; i<explode.length; i++) {
String keyAndValue = explode[i];
int at = keyAndValue.indexOf("=");
String value = keyAndValue.substring(at+1);
result.add(value);
}
String finalResult = "";
for (String val : result) {
finalResult+=val+", ";
}
finalResult=finalResult.substring(0, finalResult.length()-2);
System.out.println(finalResult);
}
}
基本上,分解为键+值标记,首先找到 = char 并从那里获取值。足够简单。除非有其他一些意想不到的格式规则。我希望空格和逗号不会出现在键和值中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句