如何使用点作为分隔符?

时间:2015-07-12 14:56:18

标签: java java.util.scanner delimiter

import java.util.Scanner;
public class Test{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        input.useDelimiter(".");
        String given = input.next();
        System.out.println(given);
    }
}

当我运行上面的代码并输入asdf.然后输入时,我什么都没得到。

它适用于"," ";" "\"" "\\\\"或其他任何内容,但不适用于"." ...所以有点关于点或这只是Eclipse IDE或其他什么问题吗?

2 个答案:

答案 0 :(得分:2)

扫描程序使用正则表达式(正则表达式)作为分隔符,而正则表达式中的dot .是特殊字符,表示除行分隔符之外的任何字符。因此,如果分隔符是任何字符,当您编写asdf.时,其每个字符都将被视为分隔符,而不仅仅是点。因此,每次使用next()时,结果都将为空字符串,该字符串存在于我标有|的地方

a|s|d|f|.

要创建点文字,您需要将其转义。您可以使用\.。还有其他方法,例如使用character class [.]

请尝试使用

input.useDelimiter("\\.");

答案 1 :(得分:0)

/ 这可能是另一个有用的示例,该如何使用Delimeter? 扫描程序会检测到任何字符串中的DOT,然后将借助任何LOOP来简单地将字符串数据分离并存储在ArrayList中。 /

/ 如果有帮助,请按UP按钮。 /

public class MainActivity extends AppCompatActivity {

EditText et_ip_address;
TextView txt_1st;
TextView txt_2nd;
TextView txt_3rd;
TextView txt_4th;
Button btn_getResult;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn_getResult = findViewById(R.id.button);
    et_ip_address = findViewById(R.id.et_ip_address);
    txt_1st = findViewById(R.id.txt_1st);
    txt_2nd = findViewById(R.id.txt_2nd);
    txt_3rd = findViewById(R.id.txt_3rd);
    txt_4th = findViewById(R.id.txt_4th);
    final ArrayList data = new ArrayList();

    //Click on this button execute the code to separate Strings
    btn_getResult.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            data.clear();
            Scanner fromString = new Scanner(et_ip_address.getText().toString());
            fromString.useDelimiter("\\.");   //this is how we should use to detects DOT
            while(fromString.hasNext()){
                String temp = fromString.next();
                data.add(temp);
            }
            txt_1st.setText(data.get(0).toString());
            txt_2nd.setText(data.get(1).toString());
            txt_3rd.setText(data.get(2).toString());
            txt_4th.setText(data.get(3).toString());
        }
    });
}

}