Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中,获取特殊字符前的字符串值_Java_Arrays_String - Fatal编程技术网

在java中,获取特殊字符前的字符串值

在java中,获取特殊字符前的字符串值,java,arrays,string,Java,Arrays,String,这似乎是一个简单的问题,但我无法解决这个问题 我有以下名为results的字符串数组: 21|Commercial Property Green 100|Social Services Commercial Property 5|Social Services Professional 6501|Personal Property 我只需要字符串的数字部分(即21、100、5和6501,它们可以是字符串,不需要是整数)。我该怎么做 如果您需要更多信息,请告诉我。使用正则表达式:([^ |]+)

这似乎是一个简单的问题,但我无法解决这个问题

我有以下名为results的字符串数组:

21|Commercial Property Green
100|Social Services Commercial Property
5|Social Services Professional
6501|Personal Property
我只需要字符串的数字部分(即21、100、5和6501,它们可以是字符串,不需要是整数)。我该怎么做


如果您需要更多信息,请告诉我。

使用正则表达式:
([^ |]+)


假设粘贴的是数组中的每个项,则可以执行类似这样的简单操作

public class StringSplit {

  public static void main(String[] args) {
    String[] lines = new String[]{"21|Commercial Property Green Endorsement",
      "100|Social Services Commercial Property Endorsement",
      "5|Social Services Professional Liability",
      "6501|Personal Property Liability"};
    for (String string : lines) {
      String num = string.split("\\|")[0];
      System.out.println(num);
    }
  }

}

您还可以使用
split()
方法

String str = "21|Commercial Property Green Endorsement";
String[] parts = str.split("\\|");
String part1 = parts[0]; // 21
String part2 = parts[1]; // Commercial Property Green Endorsement

你们太喜欢正则表达式了

int x = line.indexOf('|');
if(x==-1) 
    ... parse error
else
    return line.substring(0,x);

如果数组中的所有字符串的格式相同,则可以使用以下命令

 for(int i=0;i<arr.length();i++){
  System.out.println(arr[i].substring(0,arr[i].indexOf('|')));
}

for(inti=0;i为什么不使用全新的Java8功能再回答一个问题:)

转义字符(也称为转义序列或转义码)通常用于表示一系列字符的替代解释。在Java中,前跟反斜杠()的字符是转义序列,对Java编译器具有特殊意义。 我们使用\作为转义字符,否则将不考虑“|”


它拆分并返回一个字符串数组,正如您在Split()定义中看到的那样。

这似乎是最简单的一个,它可以工作。谢谢。如果你能解释一下常用的表达方式,那对OP会有好处的。谢谢@DavidBrossard的宝贵意见。我现在就做
 for(int i=0;i<arr.length();i++){
  System.out.println(arr[i].substring(0,arr[i].indexOf('|')));
}
String[] stringArray = new String[] {
    "21|Commercial Property Green Endorsement",
    "100|Social Services Commercial Property Endorsement",
    "5|Social Services Professional Liability",
    "6501|Personal Property Liability"
};

int[] intArray = Arrays.stream(stringArray).mapToInt(s -> Integer.parseInt(s.split("\\|")[0])).toArray();
for (int i=0; i< results.length(); i++) {
results[i].split("\\|")[0];}
    public String[] split(String regex) {
    return split(regex, 0);
}