บทนำ
ในบทความนี้ เราจะเรียนรู้วิธีการลบศูนย์นำหน้า (Leading zeros) จากสตริง สตริงที่มีศูนย์นำหน้าหรือ 1 นำหน้าสามารถลบได้โดยใช้ iterator แบบง่ายและแทนที่ศูนย์ด้วยช่องว่าง
ตัวอย่างการทำงาน
อินพุทตัวอย่าง:
Input string: 00000445566
เอาต์พุทที่คาดหวัง:
Result: 445566
อัลกอริทึม
ขั้นตอนที่ 1 - เริ่มต้น ขั้นตอนที่ 2 - ประกาศสตริง input_string และออบเจ็กต์ StringBuffer string_buffer ขั้นตอนที่ 3 - กำหนดค่า ขั้นตอนที่ 4 - วนลูป while ตรวจสอบตัวอักษรที่ดัชนี i เป็น '0' หรือไม่ เพิ่ม i จนกว่าจะเจอตัวที่ไม่ใช่ศูนย์ ขั้นตอนที่ 5 - ใช้ StringBuffer.replace(0, i, "") ลบศูนย์นำหน้า ขั้นตอนที่ 6 - แสดงผลลัพธ์ ขั้นตอนที่ 7 - จบการทำงาน
ตัวอย่างที่ 1: เขียนในฟังก์ชัน main โดยตรง
import java.util.Arrays;
import java.util.List;
public class RemoveZero {
public static void main(String[] args) {
System.out.println("Required packages have been imported");
String input_string = "00000445566";
System.out.println("\nThe string is defined as: " + input_string);
int i = 0;
while (i < input_string.length() && input_string.charAt(i) == '0') {
i++;
}
StringBuffer string_buffer = new StringBuffer(input_string);
string_buffer.replace(0, i, "");
input_string = string_buffer.toString();
System.out.println(input_string);
}
}
เอาต์พุท
Required packages have been imported The string is defined as: 00000445566 445566
ตัวอย่างที่ 2: ใช้เมธอดแยก (Object-Oriented Style)
import java.util.Arrays;
import java.util.List;
public class RemoveZero {
public static String remove_zero(String input_string) {
int i = 0;
while (i < input_string.length() && input_string.charAt(i) == '0') {
i++;
}
StringBuffer string_buffer = new StringBuffer(input_string);
string_buffer.replace(0, i, "");
return string_buffer.toString();
}
public static void main(String[] args) {
System.out.println("Required packages have been imported");
String input_string = "00000445566";
System.out.println("\nThe string is defined as: " + input_string);
input_string = remove_zero(input_string);
System.out.println(input_string);
}
}
เอาต์พุท
Required packages have been imported The string is defined as: 00000445566 445566
วิธีอื่นๆ ที่ทันสมัยกว่า:
// ใช้ regex (Java 1.4+)
String result = input_string.replaceFirst("^0+", "");
// ใช้ String.stripLeading() (Java 11+) - ลบ whitespace นำหน้า
// สำหรับศูนย์เฉพาะ: ใช้ regex ด้านบน
// ใช้ Apache Commons Lang
String result = StringUtils.stripStart(input_string, "0");
// แปลงเป็นตัวเลข (ถ้าต้องการค่าตัวเลข)
long value = Long.parseLong(input_string); // "00000445566" → 445566
String result = String.valueOf(value); // "445566"
กรณีพิเศษ: สตริง "0000" → ผลลัพธ์ควรเป็น "" (ว่าง) หรือ "0" ขึ้นอยู่กับความต้องการ