【问题标题】:How to pass in Strings and combined them to make a new variable(String concatenation trouble)?如何传入字符串并将它们组合成一个新变量(字符串连接麻烦)?
【发布时间】:2012-04-17 04:47:14
【问题描述】:

我正在做一个项目,但我不知道如何正确解析一些输入,例如 a1 = ("hello" + "World")。 a1 是我制作的一个单元格,我试图最后将 helloworld 放入该单元格。这是我使用解析输入的课程之一。当我使用数字时,它可以正常工作,但不适用于字符串。我只是想能够将(“hi”+“man”)之类的输入解析为himan。我只想能够解析出空格和加号并将 heman 变成一个字符串。

import java.util.Scanner;


public class ParseInput {
    private static String inputs;
    static int col;
    private static int row;
    private static String operation;
    private static Value field;


    public static void parseInput(String input){
         //splits the input at each regular expression match. \w is used for letters and \d && \D for integers
        inputs = input;
        Scanner tokens = new Scanner(inputs);
        String[] strings = input.split("=");
        String s1 = strings[0].trim(); // a1
        String s2 = strings[1].trim(); // "Hello" + "World"

        strings = s2.split("\\+");
        String s3 = strings[0].trim().replaceAll("^\"", "").replaceAll("\"$", ""); // Hello
        String s4 = strings[1].trim().replaceAll("^\"", "").replaceAll("\"$", ""); // World
        String field = s3 + s4;

        String colString = s1.replaceAll("[\\d]", ""); // a
        String rowString = s1.replaceAll("[\\D]", ""); // 1
        int col = colString.charAt(0) - 'a'; // 0
        int row = Integer.parseInt(rowString);
        TextValue fieldvalue = new TextValue(field); 

        Spreadsheet.changeCell(row, col, fieldvalue);

        String none0 = tokens.next();
        @SuppressWarnings("unused")
        String none1 = tokens.next();
        operation = tokens.nextLine().substring(1);
        String[] holder =  new String[2];
        String regex = "(?<=[\\w&&\\D])(?=\\d)";   
        holder = none0.split(regex);
        row = Integer.parseInt(holder[1]);
        col = 0;
        int counter = -1;
        char temp = holder[0].charAt(0);
        char check = 'a';
        while(check <= temp){
            if(check == temp){
                col = counter +1;
            }
            counter++;
            check = (char) (check + 1);
        }
         System.out.println(col);
         System.out.println(row);
         System.out.println(operation);
         setField(Value.parseValue(operation));

         Spreadsheet.changeCell(row, col, fieldvalue);

    }

    public static Value getField() {
        return field;
    }

    public static void setField(Value field) {
        ParseInput.field = field;
    }
}

【问题讨论】:

  • 您能否详细说明您要做什么?
  • 刚刚做了。我只想知道如何正确解析输入,例如 a1 = ("hel" + "lo") 将更改为 hello。

标签: java regex string-concatenation


【解决方案1】:

如果你想删除空格,它是一个单行...

input = input.replaceAll("[\\s+\"]", "");

另一种方法是简单地删除所有“非单词”字符(定义为 0-9、a-z、A-Z 和下划线):

input = input.replaceAll("\\W", "");

【讨论】:

  • 谢谢,但我试图解析出空格和加号。例如,我希望能够输入 a1 = ("hel" + "lo") 然后它会变成 hello。
  • 编辑了答案以删除空格、加号和双引号。您可以根据需要在其中添加其他字符。另外,请参阅替代答案
【解决方案2】:

使用StringBuilderString 在 Java 中是不可变的,这意味着您每次想要组合两个字符串时都将创建一个新实例。使用append() 方法(它几乎可以接受任何内容)在末尾添加一些内容。

StringBuilder input = "";
input.append("hel").append("lo");

Here 是它的文档。看看吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    相关资源
    最近更新 更多