有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从数组中提取单词

我有以下几点: “一,二,三,四” 我想做的是在数组空间中得到“1”、“2”、“3”,所以当我打印数组时,我得到“1”、“2”、“3”。我有这个密码,但我得到的只是“eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

 for(int j=0;j<s.length();j++){
    for(int i=0;i<s.length();i++)
        if(Character.isLetter(s.charAt(i))&&s.charAt(i)!=',')
        words[j]=""+s.charAt(i);
    }

共 (3) 个答案

  1. # 1 楼答案

    使用String.split()方法:

    String[] words = s.split(",");
    

    编辑: 如果您的字符串非常像“一、二、三、四”,那么看起来您正在搜索整个单词。这将有助于:

    String s = " one, ,two three,4,";
    Pattern p = Pattern.compile("([a-zA-Z]+)");
    Matcher m = p.matcher(s);
    List<String> stringList = new ArrayList<String>();
    while (m.find()) {
        stringList.add(m.group(1));
    }
    String[] words = stringList.toArray(new String[stringList.size()]);
    
  2. # 2 楼答案

    那就试试这个

       String test = " one, ,two three,4,";
        //replace all digit to blank
        test = test.replaceAll("\\d+", "");
        List<String> splittedText = Splitter.on(",").omitEmptyStrings().trimResults().splitToList(test);
        String combineWords = "";
        for (String word : splittedText) {
            combineWords+=word+" ";
        }
    
        List<String> finalSplittedWord = Splitter.on(" ").omitEmptyStrings().splitToList(combineWords);
        for (String word : finalSplittedWord) {
            System.out.println(word);
        }
    

    输出

      one
      two
      three
    

    Splitter.on来自谷歌番石榴图书馆。下载jar&;在你的项目中使用它

  3. # 3 楼答案

    这是我的尝试。此方法适用于每种语言和每种空格字符:

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class Split {
    
        public static void main(String[] args) {
            String str = " one, two, three, 4,";
            System.out.println(getWords(str));
        }
    
        public static List<String> getWords(String str) {
            List<String> list = new ArrayList<String>(Arrays.asList(str
                .split("[,\\s+]")));
            list.removeIf(s -> s.isEmpty()
                || !s.chars().allMatch(c -> Character.isAlphabetic(c)));
            return list;
        }
    }
    

    输出:

    [one, two, three]
    

    然而,它只在Java8中工作。如果您需要它在Java 7中工作,它会稍微长一点:

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    
    public class Split {
        public static void main(String[] args) {
            String str = " one, two, three, 4,";
            System.out.println(getWords(str));
        }
    
        public static List<String> getWords(String str) {
            List<String> list = new ArrayList<String>(Arrays.asList(str.split("[,\\s+]")));
    
            Iterator<String> it = list.iterator();
    
            while (it.hasNext()) {
                String part = it.next();
                if (part.isEmpty()) {
                    it.remove();
                    continue;
                }
    
                for (int i = 0; i < part.length(); i++) {
                    if (!Character.isAlphabetic(part.charAt(i))) {
                        it.remove();
                        continue;
                    }
                }
            }
    
            return list;
        }
    }
    

    输出:

    [one, two, three]