มีวิธีง่าย ๆ ในการลบซับสตริงออกจากที่ระบุString
ใน Java
ตัวอย่าง: "Hello World!"
, ลบ"o"
→"Hell Wrld!"
มีวิธีง่าย ๆ ในการลบซับสตริงออกจากที่ระบุString
ใน Java
ตัวอย่าง: "Hello World!"
, ลบ"o"
→"Hell Wrld!"
คำตอบ:
คุณสามารถใช้String.replace()
:
String helloWorld = "Hello World!";
String hellWrld = helloWorld.replace("o","");
คุณสามารถใช้ StringBuffer
StringBuffer text = new StringBuffer("Hello World");
text.replace( StartIndex ,EndIndex ,String);
ตรวจสอบApache StringUtils :
static String replace(String text, String searchString, String replacement)
แทนที่ String ทั้งหมดภายในสตริงอื่นstatic String replace(String text, String searchString, String replacement, int max)
แทนที่สตริงด้วยสตริงอื่นภายในสตริงที่ใหญ่กว่าสำหรับค่าสูงสุดแรกของสตริงการค้นหาstatic String replaceChars(String str, char searchChar, char replaceChar)
แทนที่อักขระทั้งหมดใน String ด้วยเหตุการณ์อื่นstatic String replaceChars(String str, String searchChars, String replaceChars)
แทนที่อักขระหลายตัวใน String ในครั้งเดียวstatic String replaceEach(String text, String[] searchList, String[] replacementList)
แทนที่ Strings ทั้งหมดภายในสตริงอื่นstatic String replaceEachRepeatedly(String text, String[] searchList, String[] replacementList)
แทนที่ Strings ทั้งหมดภายในสตริงอื่นstatic String replaceOnce(String text, String searchString, String replacement)
แทนที่สตริงด้วยสตริงอื่นภายในสตริงที่ใหญ่กว่าหนึ่งครั้งstatic String replacePattern(String source, String regex, String replacement)
แทนที่แต่ละสตริงย่อยของสตริงต้นทางที่ตรงกับนิพจน์ทั่วไปที่กำหนดด้วยการแทนที่ที่กำหนดโดยใช้ตัวเลือก Pattern.DOTALL
replace('regex', 'replacement');
replaceAll('regex', 'replacement');
ในตัวอย่างของคุณ
String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");
มันใช้งานได้ดีสำหรับฉัน
String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");
หรือคุณสามารถใช้
String no_o = hi.replace("o", "");
คุณควรดูStringBuilder/StringBuffer
ว่าอนุญาตให้คุณลบแทรกแทนที่อักขระที่ออฟเซ็ตที่ระบุได้หรือไม่
คุณยังสามารถใช้ฟังก์ชันCharMatcher.removeFrom ของฝรั่ง
ตัวอย่าง:
String s = CharMatcher.is('a').removeFrom("bazaar");
replaceAll(String regex, String replacement)
วิธีการข้างต้นจะช่วยให้ได้คำตอบ
String check = "Hello World";
check = check.replaceAll("o","");
คุณสามารถใช้ซับสตริงเพื่อแทนที่ด้วยสตริงที่มีอยู่:
var str = "abc awwwa";
var Index = str.indexOf('awwwa');
str = str.substring(0, Index);
นี่คือการดำเนินการเพื่อลบสตริงย่อยทั้งหมดจากสตริงที่กำหนด
public static String deleteAll(String str, String pattern)
{
for(int index = isSubstring(str, pattern); index != -1; index = isSubstring(str, pattern))
str = deleteSubstring(str, pattern, index);
return str;
}
public static String deleteSubstring(String str, String pattern, int index)
{
int start_index = index;
int end_index = start_index + pattern.length() - 1;
int dest_index = 0;
char[] result = new char[str.length()];
for(int i = 0; i< str.length() - 1; i++)
if(i < start_index || i > end_index)
result[dest_index++] = str.charAt(i);
return new String(result, 0, dest_index + 1);
}
การใช้งานของ isSubstring () วิธีการอยู่ที่นี่
private static void replaceChar() {
String str = "hello world";
final String[] res = Arrays.stream(str.split(""))
.filter(s -> !s.equalsIgnoreCase("o"))
.toArray(String[]::new);
System.out.println(String.join("", res));
}
replace()
ในกรณีที่คุณมีบางตรรกะที่ซับซ้อนเพื่อกรองถ่านเพียงวิธีอื่นแทน
หากคุณรู้จักดัชนีเริ่มต้นและสิ้นสุดคุณสามารถใช้สิ่งนี้
string = string.substring(0, start_index) + string.substring(end_index, string.length());