簡體   English   中英

我如何將字符串拆分為vallid子字符串,而不管內部的不確定長度空白

[英]how could I split the string into vallid substrings regardless of uncertain length blank inside

例如:執行后,字符串"hello world yo""hello world yo"應嚴格相同。

此外,輸出應為String[] ,其中:

String[0] == "hello"; String[1] == "world"; String[2] == "yo";

以便其他方法可以處理有效詞。

我當時在想String.split(" ") ,但是單詞之間的空格是不確定的,然后會引發異常。

您可以使用

  String.split("\\s+") // one or more whitespace.

請勿將==用於字符串共義,而應使用String.equals()

編輯評論中的問題

叫什么符號? 如果有一個或多個“ _”或“ \\ n”怎么辦?

如您所見, String#split()API接受正則表達式作為參數。 \\s是空白的簡寫字符類,而+用於重復一次或多次重復上一個項目。

現在,如果您想在

  1. _ 下划線-> "this__is_test".split("[_]+");

  2. \\n即。 換行符-> "this__is_test\\n new line".split("\\\\r?\\\\n");

正則表達式教程

您可以在"\\\\s+"上拆分。 分割成一個或多個空白字符。

String.split()需要一個正則表達式,因此您只需執行String.split(" +")

我認為split函數使用正則表達式,但是如果不這樣做,則下面的方法有效。

這種正則表達式可能不正確,但是它演示了您要嘗試執行的操作的概念。

Pattern p = Pattern.compile("(.*?)  *(.*)");
Matcher m = p.matcher(s);
if (m.matches()) {
   String name = m.group(1);
   String value = m.groupo(2);
}

for (int i = 1; i<=m.groupCount(); i++) {
    System.out.println(m.group(i));
}

您可以使用正則表達式拆分字符串。

String.split(Regular Expression);

對於多個空格,可以使用正則表達式:“ \\\\ s +”,它代表空格。

“ ==“運算符,用於判斷左右是否相等。 對於String,它們實際上是Object,這意味着它們被視為引用(如C中的指針)。

因此,如果要比較兩個字符串的內容,可以使用String的equals(String)方法。 例如str1.equals(str2)

暫無
暫無

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

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