使用点

时间:2016-07-06 16:31:23

标签: java regex

如果包围/前面/后跟非数字,我想用空格替换点,如果包围/前面/后跟数字,则不做任何操作。

例如,字符串“我跑了4.4公里。共计2次。”将成为“我跑了4公里总共2次”

我需要帮助来构建这个正则表达式。我正在使用这个:

string.replaceAll("[D].", "[D]")

并且,只获得无数点。

1 个答案:

答案 0 :(得分:1)

你可以使用像

这样的前瞻和后瞻
  /**
     * Fires an intent to spin up the "file chooser" UI and select an image.
     */
    public void performFileSearch(View view) {

        // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file
        // browser.
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);

        // Filter to only show results that can be "opened", such as a
        // file (as opposed to a list of contacts or timezones)
        intent.addCategory(Intent.CATEGORY_OPENABLE);

        // Filter to show only images, using the image MIME data type.
        // If one wanted to search for ogg vorbis files, the type would be "audio/ogg".
        // To search for all documents available via installed storage providers,
        // it would be "*/*".
        intent.setType("image/*");

        startActivityForResult(intent, READ_REQUEST_CODE);
    }

    @Override
    public  void onActivityResult(int requestCode, int resultCode, Intent resultData){

        if(requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK){
            Uri uri = null;
            if(resultData != null){
                uri = resultData.getData();
                Log.i(TAG, "Uri" + uri.toString());

                Toast.makeText(MainActivity.this, "Uri:" + uri.toString(), Toast.LENGTH_LONG).show();
                IMGS_PATH = Environment.getExternalStorageDirectory().toString()+ "/TesseractSample/imgs";
                prepareDirectory(IMGS_PATH);
                prepareTesseract();
                startOCR(uri);
            }
        }
    }

 //Function that begins the OCR functionality.
    private void startOCR(Uri imgUri) {
        try {

            Log.e(TAG, "Inside the startOCR function");
            BitmapFactory.Options options = new BitmapFactory.Options();
            // 1 - means max size. 4 - means maxsize/4 size. Don't use value <4, because you need more memory in the heap to store your data.
            options.inSampleSize = 4;
          //  FileOutputStream outStream = new FileOutputStream(String.valueOf(imgUri));
            Bitmap bm = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imgUri);
           // bm.compress(Bitmap.CompressFormat.PNG,100,outStream);

            Bitmap bitmap = BitmapFactory.decodeFile(imgUri.getPath());

            //The result variable will hold whatever is returned from "extractText" function.
            result = extractText(bm);

            //Creating the intent to go to the CropTest
            Intent intentToCropTest = new Intent(MainActivity.this, CropTest.class);
            intentToCropTest.putExtra("result",result);
            startActivity(intentToCropTest);

            //Setting the string result to the content of the TextView.
            // textView.setText(result);

        } catch (Exception e) {
            Log.e(TAG, e.getMessage());
        }
    }

正则表达式解释

System.out.println(Str.replaceAll("(?<=\\D)\\.(?=\\D|$)", ""));