是否有任何正则表达式可用于在java中的字符串中仅查找转义字符?

时间:2018-02-02 06:42:49

标签: java regex string split special-characters

我想从特殊字符列表中过滤掉转义字符。

String data = "21.LRK.31";
char[] charactersInData = data.toCharArray();
Pattern pattern = Pattern.compile("[^0-9^a-z^A-Z]+");
String specialCharacterInData = "";
String escapeCharacterInData = "";
for (int i = 0; i < charactersInData.length; i++) {
    Matcher matcher = pattern.matcher(String.valueOf(charactersInData[i]));
    if (matcher.matches()) {
        specialCharacterInData = String.valueOf(charactersInData[i]);
        break;
    }
}
pattern = Pattern.compile("[^0-9^a-z^A-Z]+");
if (specialCharacterInData.equals(".")) {
    escapeCharacterInData = "\\" + specialCharacterInData;
} else {
    escapeCharacterInData = specialCharacterInData;
}
String[] contentOfLicencePlateNumber = data.split(escapeCharacterInData);

在获取specialCharacterInData之后,我想再次检查这个特殊字符是否是转义字符,因为要通过转义字符拆分字符串,您需要在此之前添加2个反斜杠(\\)。

1 个答案:

答案 0 :(得分:1)

如果你想在任何非字母数字字符上拆分字符串,那么使用单行代码就可以轻松完成:

import UIKit
import WebKit

class ViewController: UIViewController, UIDocumentInteractionControllerDelegate {

    var docController: UIDocumentInteractionController!

    override func viewDidLoad() {
        super.viewDidLoad()

        docController = UIDocumentInteractionController.init(url: URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(urlVal!))
        docController.delegate = self
        docController.presentPreview(animated: true)       
    }


    func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
            return self
     }
}

Demo

如果您有此需求,请更新您的问题。我怀疑你可能正在做额外的工作,这对于实现你的最终目标是不必要的。

编辑:如果你真的需要逃避一个未知的角色,那么考虑将它放入一个角色类。例如:

String data = "21.LRK.31";
String[] parts = data.split("[^A-Za-z0-9]");

这将输出System.out.println("Hello.World!".split("[.]")[1]); ,我们可以分为点,一个元字符,而不必担心转义。