הסר סימני פיסוק ממחרוזת ב-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

אם אינך רוצה להשתמש בביטויים רגולריים, תוכל לבצע בדיקה ידנית תוך כדי איטרציה דרך כל תו של מחרוזת. זכור להשתמש ב-a StringBuffer במקום String תוך כדי פעולה זו, מכיוון שהמחרוזות אינן ניתנות לשינוי וצריך ליצור עותקים בכל פעם שאתה רוצה להוסיף דמות - אז אתה יוצר string.length מספר המחרוזות בזיכרון.

StringBuffer ניתן לשינוי, וניתן להמיר אותו בקלות למחרוזת בלתי ניתנת לשינוי בסוף התהליך:

עיין במדריך המעשי והמעשי שלנו ללימוד Git, עם שיטות עבודה מומלצות, סטנדרטים מקובלים בתעשייה ודף רמאות כלול. תפסיק לגוגל פקודות 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 לולאה.

בול זמן:

עוד מ Stackabuse