如何使用点作为分隔符?

How do I use a dot as a 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 或其他问题?

扫描器使用正则表达式 (regex) 作为分隔符,正则表达式中的 dot . 是特殊字符,代表除行分隔符之外的任何字符。因此,如果分隔符是 任何字符 ,当您编写 asdf. 时,它的每个字符都将被视为分隔符,而不仅仅是点。所以每次你将使用 next() 结果将是空字符串,它存在于我用 |

标记的地方
a|s|d|f|.

要创建点文字,您需要对其进行转义。您可以为此使用 \.。还有其他方法,比如使用 character class [.].

所以试试

input.useDelimiter("\.");

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

/如果有帮助点击向上按钮。/

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());
        }
    });
}

}