【问题标题】:How do I use a dot as a delimiter?如何使用点作为分隔符?
【发布时间】:2015-07-12 14:56:18
【问题描述】:
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或其他什么的问题?

【问题讨论】:

    标签: java java.util.scanner delimiter


    【解决方案1】:

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

    a|s|d|f|.
    

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

    所以试试

    input.useDelimiter("\\.");
    

    【讨论】:

      【解决方案2】:

      /这可能是另一个有用的例子,那如何使用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());
              }
          });
      }
      

      }

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 2021-11-01
        • 2017-10-25
        • 2011-02-06
        • 2013-04-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多