أثناء معالجة النصوص ، سواء كنت تبحث عن كلمات معينة وتضع قواعد مطابقة الأنماط ، أو حساب تكرار العناصر ، وما إلى ذلك - يمكن أن تؤدي علامات الترقيم إلى وضع مفتاح ربط في خططك.
في كثير من الأحيان ، سترغب في إزالة كلمات التوقف أو علامات الترقيم أو الأرقام أو غير ذلك بعض فئة الشخصيات ، اعتمادًا على هدفك النهائي.
في هذا البرنامج التعليمي القصير ، سنلقي نظرة على كيفية إزالة علامات الترقيم من سلسلة في 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
عقدة.