【问题标题】:fast way to get an element from a string in java从java中的字符串中获取元素的快速方法
【发布时间】:2023-03-26 10:41:01
【问题描述】:

我试图从我的字符串中获取一个元素,我通过 JList 中的 getSelectedValue().toString 获得了该元素。 它返回[1] testString

我正在尝试做的只是从字符串中获取 1。有没有办法只从字符串中获取该元素或从字符串中删除所有其他元素?

我试过了:

String longstring = Customer_list.getSelectedValue().toString();
int index = shortstring.indexOf(']');
String firstPart = myStr.substring(0, index); 

【问题讨论】:

  • 是的,有。你有没有尝试过?
  • @KevinEsche 我试过 String longstring; longstring = Customer_list.getSelectedValue().toString(); int index = shortstring.indexOf(']'); String firstPart = myStr.substring(0, index);
  • 你几乎拥有它,String#substring(int) 定义了从开始索引到结束的子字符串。这只会为您提供[1] 之后的所有内容。如果你使用String#substring(int,int),它被定义为从 pos x 创建一个子字符串以排除 pos y 那么你可以这样做:longstring.substring(0, longstring.indexOf("]") + 1)
  • 这确实删除了字符串的第二部分。谢谢!我需要弄清楚的是如何删除“[”和“]”。我会用同样的方式吗?
  • 您可以使用String#replace(charSequence, charSequence) 方法。第一个参数应该是"[""]",第二个参数可以是一个空字符串""。只需依次调用两次,括号就应该消失了。

标签: java substring


【解决方案1】:

你有很多方法可以做到,例如

  1. 正则表达式
  2. String#replaceAll
  3. String#substring

请参阅下面的代码以使用所有方法。

import java.util.*;
import java.lang.*;
import java.util.regex.Matcher;  
import java.util.regex.Pattern;

class Test {  
    public static void main(String args[]) {
    String[] data = { "[1] test", " [2] [3] text ", " just some text " };

    for (String s : data) {
        String r0 = null;
        Matcher matcher = Pattern.compile("\\[(.*?)\\]").matcher(s);
        if (matcher.find()) {
            r0 = matcher.group(1);
        }
        System.out.print(r0 + " ");
    }
    System.out.println();

    for (String s : data) {
        String r1 = null;
        r1 = s.replaceAll(".*\\[|\\].*", "");
        System.out.print(r1 + " ");
    }
    System.out.println();

    for (String s : data) {
        String r2 = null;
        int i = s.indexOf("[");
        int j = s.indexOf("]");
        if (i != -1 && j != -1) {
            r2 = s.substring(i + 1, j);
        }
        System.out.print(r2 + " ");
    }
    System.out.println();
    }
}

但是结果可能会有所不同,例如String#replaceAll 会在输入不是您期望的结果时给您错误的结果。

1 2 null

1 3 just some text

1 2 null

【讨论】:

    【解决方案2】:

    最适合我的是String#replace(charSequence, charSequence) 结合String#substring(int,int)

    我做了如下:

            String longstring = Customer_list.getSelectedValue().toString();
            String shortstring = longstring.substring(0, longstring.indexOf("]") + 1);
            String shota = shortstring.replace("[", "");
            String shortb = shota.replace("]", "");
    

    我的字符串已被缩短,此后分两步将 [ 和 ] 删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-30
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 2014-07-24
      • 2011-09-12
      相关资源
      最近更新 更多