簡體   English   中英

如何在同一個類中將splitbuilder與splitbuilder一起使用?

[英]How to use split method with stringbuilder together in the same class?

StringBuilder隱藏元音:

String bienvenue_intro = " Welcome! Java First Semester: 455, java street: City (State): Country: 575757 ";
StringBuilder sb = new StringBuilder(bienvenue_intro);
String[] introduction = bienvenue_intro.split(":"); 
for (int i = 0; i < bienvenue_intro.length(); i++) {
    char c = bienvenue_intro.charAt(i);
    if ((c == 'A') || (c == 'a') ||
        (c == 'E') || (c == 'e') ||
        (c == 'I') || (c == 'i') ||
        (c == 'O') || (c == 'o') ||
        (c == 'U') || (c == 'u')) {
            sb.setCharAt(i, '*');
    }
}
System.out.println(bienvenue_intro);
System.out.println(sb.toString());

上面代碼的輸出是:

Welcome! Java First Semester: 455, java street: City (State): Country: 575757 
 W*lc*m*! J*v* F*rst S*m*st*r: 455, j*v* str**t: C*ty (St*t*): C**ntry: 575757 

方法拆分以打破線條:

for (int i = 0; i < introduction.length; i++)
    System.out.println(introduction[i]);

使用split + string builder所需的輸出將是:

W*lc*m*! J*v* F*rst S*m*st*r

 455, j*v* str**t

 C*ty (St*t*)

 C**ntry

 575757 

但是它們在一起它不起作用! 甚至可以使用Split方法將StringBuilder組合在一起嗎?

不要先拆分String ,先拆分轉換。 StringBuilder將為您執行就地字符替換,並使用toString()獲取替換的String並對其執行拆分。

String bienvenue_intro = " Welcome! Java First Semester: 455, java street: City (State): Country: 575757 ";
StringBuilder sb = new StringBuilder(bienvenue_intro);

for (int i = 0; i < bienvenue_intro.length(); i++) {
  char c = bienvenue_intro.charAt(i);
  if (   (c == 'A') || (c == 'a')
      || (c == 'E') || (c == 'e')
      || (c == 'I') || (c == 'i')
      || (c == 'O') || (c == 'o')
      || (c == 'U') || (c == 'u')) {
    sb.setCharAt(i, '*');
  }
}
System.out.println(bienvenue_intro);
//System.out.println(sb.toString());

String[] introduction = sb.toString().split(":");  //<-- Do the split here after replacements.
for (String string : introduction) {
  System.out.println(string);
}

輸出:

 W*lc*m*! J*v* F*rst S*m*st*r
 455, j*v* str**t
 C*ty (St*t*)
 C**ntry
 575757 

有一個更好,更簡單的方法:)

replaceAll()split()

public static void main(String[] args) {
    String bienvenue_intro = " Welcome! Java First Semester: 455, java street: City (State): Country: 575757 ";
    String[] arr = bienvenue_intro.replaceAll("(?i)[aeiou]+", "*").split(":");

    for(String s : arr) {
        System.out.println(s);
    }
}

 W*lc*m*! J*v* F*rst S*m*st*r
 455, j*v* str*t
 C*ty (St*t*)
 C*ntry
 575757 

我想擴展@YoungHobbit給出的答案。 我不是專家,但這些是我的觀察:

我的看法:

String bienvenue_intro = " Welcome! Java First Semester: 455, java street: City (State): Country: 575757 ";
String mod_str = bienvenue_intro.replaceAll( "(?i)[aeiou]", "*" );
String[] introduction = mod_str.split(":");
for (String string : introduction) {
  System.out.println(string);
}

我相信你的方法是錯誤的:已經有一個API可以在一個易於閱讀的代碼行中執行此操作:

System.out.println(bienvenue_intro.replaceAll("[aeiouAEIOU]", "*").replace(":", "\n"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM