إزالة علامات الترقيم من سلسلة في Java

أثناء معالجة النصوص ، سواء كنت تبحث عن كلمات معينة وتضع قواعد مطابقة الأنماط ، أو حساب تكرار العناصر ، وما إلى ذلك - يمكن أن تؤدي علامات الترقيم إلى وضع مفتاح ربط في خططك.

في كثير من الأحيان ، سترغب في إزالة كلمات التوقف أو علامات الترقيم أو الأرقام أو غير ذلك بعض فئة الشخصيات ، اعتمادًا على هدفك النهائي.

في هذا البرنامج التعليمي القصير ، سنلقي نظرة على كيفية إزالة علامات الترقيم من سلسلة في Java.

إزالة علامات الترقيم من سلسلة مع RegEx (التعبيرات العادية)

تعتبر التعبيرات العادية مناسبة جدًا هنا ، وذلك لأنها من المحتمل أن تكون جزءًا من أجزاء معالجة أخرى ، ولأنها مطابقة أنماط فعالة! في Java ، التعبير العادي لمطابقة علامات الترقيم هو p{Punct} أو اختصار p{P}.

سيتعين عليك تخطي أول شرطة مائلة للخلف في سلسلة ، لذا فإن إزالة جميع علامات الترقيم تعادل مطابقتها واستبدالها بحرف فارغ:

String.replaceAll("p{P}", "")

دعنا نطبقها على جملة بسيطة:

String text = "Hi! This is, in effect, a synthetic sentence. It's meant to have several punctuation characters!";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);

وينتج عنه:

Hi This is in effect a synthetic sentence Its meant to have several punctuation characters

دعنا نلقي نظرة على الأحرف التي يتم التعامل معها على أنها علامات ترقيم هنا:

String text = "!#$%&'()*+,-./:;[email protected][]^_`{|}~";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);

بهذه الأحرف الخاصة - التي تبقى بعد إزالة علامات الترقيم؟

$+^`|~

إزالة علامات الترقيم من سلسلة بدون RegEx

إذا كنت لا تريد استخدام التعبيرات العادية ، فيمكنك إجراء فحص يدوي أثناء التكرار خلال كل حرف في سلسلة. تذكر استخدام ملف StringBuffer بدلا من String أثناء القيام بذلك ، نظرًا لأن السلاسل غير قابلة للتغيير ويجب عمل نسخ في كل مرة تريد فيها إضافة حرف - لذلك ستنشئ string.length عدد الأوتار في الذاكرة.

StringBuffer قابل للتغيير ، ويمكن تحويله بسهولة إلى سلسلة ثابتة في نهاية العملية:

تحقق من دليلنا العملي العملي لتعلم Git ، مع أفضل الممارسات ، والمعايير المقبولة في الصناعة ، وورقة الغش المضمنة. توقف عن أوامر Googling Git وفي الواقع تعلم ذلك!

public static String removePunctuations(String s) {
    StringBuffer buffer = new StringBuffer();
    for (Character c : s.toCharArray()) {
        if(Character.isLetterOrDigit(c))
            buffer.append(c);
    }
    return buffer.toString();
}

لنقم بإنشاء سلسلة وتنظيفها:

String text = "Hello! nHere are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ nWhere are they? :(n";
System.out.println(text);
String clean = removePunctuations(text);
System.out.println(clean);
Hello! 
Here are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ 
Where are they? :(

HelloHerearesomespecialcharactersWherearethey

في حين أن هذه العملية أكثر قابلية للتخصيص ، إلا أنها تتحقق فقط من الأحرف والأرقام. يمكنك التحقق يدويًا من رموز الأحرف بدلاً من ذلك ، واستبعاد بعض علامات الترقيم فقط بدلاً من ذلك - وترك مسافات بيضاء وفواصل أسطر وما إلى ذلك.

وفي الختام

في هذا البرنامج التعليمي القصير ، ألقينا نظرة على كيفية إزالة علامات الترقيم أو بعض الأحرف الخاصة من سلسلة في Java ، باستخدام التعبيرات العادية أو التحقق اليدوي في محسّن for عقدة.

الطابع الزمني:

اكثر من ستاكابوز