جافا: str.replaceall () لا يعمل
-
20-09-2019 - |
سؤال
أحاول تطهير سلسلة من أخرى.
before = before.replaceAll(Constants.GENE_START_SEQUENCE, "");
ومع ذلك ، فإن التأكيد التالي يفشل في بعض الأحيان:
assert before.indexOf(Constants.GENE_START_SEQUENCE) == -1 : before;
هذا ما يبصق عليه التأكيد:
IIAOOOCOAAAOCCIOOOACAIAOACICOOIAIOOICIIOIIOICOICCCOOAOICOCOOIIOOAOAACIIOCCICIOIII
المحلول
replaceAll
يحل فقط محل حوادث النمط في السلسلة الأصلية. إذا كان النمط يعيد إرجاعه نتيجة للاستبدال ، فلن يتم استبدال هذا الحدوث الجديد. مثال:
"XXYY".replaceAll("XY", "");
سيجد هذا حدث واحد من "xy" (في الفهرس 1) ثم استبدل ذلك بـ "". ستكون النتيجة "xy". إذا كنت ترغب في منع حدوث ذلك ، فيجب عليك إعادة replaceall ، حتى replaceAll
يتوقف عن العثور على مباراة.
String string = "XXYY";
String oldString;
do {
oldString = string;
string = string.replaceAll("XY", "");
} while(!string.equals(oldString));
// string will now be ""
نصائح أخرى
يجب أن تتأكد من ذلك Constants.GENE_START_SEQUENCE
هو نمط regex صالح. إذا لم يكن من المفترض أن يكون تعبيرًا منتظمًا ، فيجب عليك الهروب منه باستخدام طريقة الاقتباس على java.util.regex.pattern.
لا تنتمي إلى StackOverflow