用引号分割 Java 字符串

发布于 2024-11-02 18:16:15 字数 475 浏览 1 评论 0原文

可能的重复:
您能推荐一个 Java 库吗用于读取(也可能写入)CSV 文件?

我需要在Java 中拆分字符串。分隔符是空格字符。 字符串可能包含成对的引号(内部有一些文本和空格) - 成对的引号内的整个正文应被视为单个标记。 示例:

 
Input:
       token1 "token 2"  token3

Output: array of 3 elements:
         token1
         token 2
         token3  

怎么做? 谢谢!

Possible Duplicate:
Can you recommend a Java library for reading (and possibly writing) CSV files?

I need to split the String in Java. The separator is the space character.
String may include the paired quotation marks (with some text and spaces inside) - the whole body inside the paired quotation marks should be considered as the single token.
Example:

 
Input:
       token1 "token 2"  token3

Output: array of 3 elements:
         token1
         token 2
         token3  

How to do it?
Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

隱形的亼 2024-11-09 18:16:15

分两次。首先是引号,然后是空格。

Split twice. First on quotes, then on spaces.

清风夜微凉 2024-11-09 18:16:15

假设其他解决方案不适合您,因为它们无法正确检测匹配的引号或忽略引号文本中的空格,请尝试以下操作:

private void addTokens(String tokenString, List<String> result) {
    String[] tokens = tokenString.split("[\\r\\n\\t ]+");
    for (String token : tokens) {
        result.add(token);
    }
}

List<String> result = new ArrayList<String>();
while (input.contains("\"")) {
    String prefixTokens = input.substring(0, input.indexOf("\""));
    input = input.substring(input.indexOf("\"") + 1);
    String literalToken = input.substring(0, input.indexOf("\""));
    input.substring(input.indexOf("\"") + 1);

    addTokens(prefixTokens, result);
    result.add(literalToken);
}

addTokens(input, result);

请注意,这不会处理不平衡的引号、转义的引号或其他错误/格式错误的情况输入。

Assuming that the other solutions will not work for you, because they do not properly detect matching quotes or ignore spaces within quoted text, try something like:

private void addTokens(String tokenString, List<String> result) {
    String[] tokens = tokenString.split("[\\r\\n\\t ]+");
    for (String token : tokens) {
        result.add(token);
    }
}

List<String> result = new ArrayList<String>();
while (input.contains("\"")) {
    String prefixTokens = input.substring(0, input.indexOf("\""));
    input = input.substring(input.indexOf("\"") + 1);
    String literalToken = input.substring(0, input.indexOf("\""));
    input.substring(input.indexOf("\"") + 1);

    addTokens(prefixTokens, result);
    result.add(literalToken);
}

addTokens(input, result);

Note that this won't handle unbalanced quotes, escaped quotes, or other cases of erroneous/malformed input.

绳情 2024-11-09 18:16:15
import java.util.StringTokenizer; 
class STDemo { 
    static String in = "token1;token2;token3"

    public static void main(String args[]) { 

        StringTokenizer st = new StringTokenizer(in, ";"); 

        while(st.hasMoreTokens()) { 
            String val = st.nextToken(); 
            System.out.println(val); 
        } 
    } 
}

这是字符串标记化的简单方法

import java.util.StringTokenizer; 
class STDemo { 
    static String in = "token1;token2;token3"

    public static void main(String args[]) { 

        StringTokenizer st = new StringTokenizer(in, ";"); 

        while(st.hasMoreTokens()) { 
            String val = st.nextToken(); 
            System.out.println(val); 
        } 
    } 
}

this is easy way to string tokenize

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文