Java 从字符串中获取值
我想从如下所示的字符串中获取一些值:Java 从字符串中获取值,java,Java,我想从如下所示的字符串中获取一些值: "ID=1923\nZ=19\nX=123\nY=102\r\nID=133\nZ=11\nX=14\nY=12r\nID=1313\nZ=121\nX=134\nY=19" 我需要ID,Z,X,Y。有人知道解决这个问题的方法吗?(我知道可以通过StringTokenizer来实现,但问题是如何实现。) 我只需要ID,Z,Y,X的值 int ID=1923; int Z=19; int X=123; int Y=102 我不想要像String=“ID=19
"ID=1923\nZ=19\nX=123\nY=102\r\nID=133\nZ=11\nX=14\nY=12r\nID=1313\nZ=121\nX=134\nY=19"
我需要ID,Z,X,Y。有人知道解决这个问题的方法吗?(我知道可以通过StringTokenizer来实现,但问题是如何实现。)
我只需要ID,Z,Y,X的值 int ID=1923; int Z=19; int X=123; int Y=102 我不想要像String=“ID=1923”这样的东西 干杯,开始发帖
from(startPosition,indexOf(“\n”);
-result
重新检查一个位置并找到下一个病例
我不喜欢递归:)但在这种情况下,我将在这里使用。
怎么样:
String value = "ID=1923\nZ=19\nX=123\nY=102\r\nID=133\nZ=11\nX=14\nY=12r\nID=1313\nZ=121\nX=134\nY=19";
String[] values = value.split("\n"); \\ This gives ID=1923, Z=19, etc
for(String str : values){
System.out.println(str.substring(0, str.indexOf('=')) + "\t" + str.substring(str.indexOf('=') + 1));
}
String str = "ID=1923\nZ=19\nX=123\nY=102\r\nID=133\nZ=11\nX=14\nY=12r\nID=1313\nZ=121\nX=134\nY=19";
StringTokenizer st = new StringTokenizer(str, "\n");
while(st.hasMoreElements()) {
System.out.println(st.nextElement());
}
或者,如果您需要以某种方式存储它们:
String str = "ID=1923\nZ=19\nX=123\nY=102\r\nID=133\nZ=11\nX=14\nY=12r\nID=1313\nZ=121\nX=134\nY=19";
StringTokenizer st = new StringTokenizer(str, "\n");
List<String> idList = new ArrayList<String>();
List<String> zList = new ArrayList<String>();
List<String> xList = new ArrayList<String>();
List<String> yList = new ArrayList<String>();
while(st.hasMoreElements()) {
String tempKey = (String)st.nextElement();
String tempValue = tempKey.split("=")[1];
if(tempKey.startsWith("ID")) {
idList.add(tempValue);
} else if(tempKey.startsWith("Z")) {
zList.add(tempValue);
} else if(tempKey.startsWith("Y")) {
yList.add(tempValue);
} else if(tempKey.startsWith("X")) {
xList.add(tempValue);
}
}
for (List<String> list : new ArrayList<List>(Arrays.asList(idList, zList, xList, yList))) {
for (String id : list) {
System.out.println(id);
}
}
String str=“ID=1923\nZ=19\nX=123\nY=102\r\nID=133\nZ=11\nX=14\nY=12r\nID=1313\nZ=121\nX=134\nY=19”;
StringTokenizer st=新的StringTokenizer(str,“\n”);
List idList=new ArrayList();
List zList=new ArrayList();
List xList=new ArrayList();
List yList=新的ArrayList();
而(st.hasMoreElements()){
String tempKey=(String)st.nextElement();
字符串tempValue=tempKey.split(“=”[1];
if(tempKey.startsWith(“ID”)){
idList.add(tempValue);
}else if(tempKey.startsWith(“Z”)){
zList.add(tempValue);
}else if(tempKey.startsWith(“Y”)){
yList.add(tempValue);
}else if(tempKey.startsWith(“X”)){
xList.add(tempValue);
}
}
for(列表:新的ArrayList(Arrays.asList(idList、zList、xList、yList))){
用于(字符串id:列表){
系统输出打印项次(id);
}
}
如果元素(ID、Z、X、Y)的顺序始终相同,则可以使用正则表达式:
用于保存值的类(为简洁起见,字段是公共的):
然后,使用regex的方法可以具有以下内容:
final String input ="ID=1923\nZ=19\nX=123\nY=102\r\nID=133\nZ=11\nX=14\nY=12r\nID=1313\nZ=121\nX=134\nY=19";
final String regex = ".*?ID=(\\d+).*?Z=(\\d+).*?X=(\\d+).*?Y=(\\d+)";
final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
final Matcher matcher = pattern.matcher(input);
final List<Something> somethings = new ArrayList<>();
while (matcher.find()) {
final Something something = new Something();
something.id = Integer.parseInt(matcher.group(1));
something.z = Integer.parseInt(matcher.group(2));
something.x = Integer.parseInt(matcher.group(3));
something.y = Integer.parseInt(matcher.group(4));
somethings.add(something);
}
for (final Something something : somethings) {
System.out.println(something);
}
如您所述,您是否尝试过使用StringTokenizer。如果是,共享代码、结果、异常。尝试一些示例或尝试在“=”上拆分?您也可以尝试使用正则表达式而不是StringTokenizerI,我只需要ID、Z、Y、X int ID=1923的值;int Z=19;int X=123;int Y=102;我不想要像String=“ID=1923”这样的东西;
final String input ="ID=1923\nZ=19\nX=123\nY=102\r\nID=133\nZ=11\nX=14\nY=12r\nID=1313\nZ=121\nX=134\nY=19";
final String regex = ".*?ID=(\\d+).*?Z=(\\d+).*?X=(\\d+).*?Y=(\\d+)";
final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
final Matcher matcher = pattern.matcher(input);
final List<Something> somethings = new ArrayList<>();
while (matcher.find()) {
final Something something = new Something();
something.id = Integer.parseInt(matcher.group(1));
something.z = Integer.parseInt(matcher.group(2));
something.x = Integer.parseInt(matcher.group(3));
something.y = Integer.parseInt(matcher.group(4));
somethings.add(something);
}
for (final Something something : somethings) {
System.out.println(something);
}
ID=1923 x=123 y=102 z=19
ID=133 x=14 y=12 z=11
ID=1313 x=134 y=19 z=121