1. java split()函數,要分割的字元串中沒有指定的分隔符,返回什麼結果
返回值是一個數組大小為1的數組,arr(0)=「12345」。
2. java split分割字元後怎麼使用
對於"a b c"中,有3個字元串,用空格分隔,在java中,我用String str="a b c";接收後再用str.split(" ");將"a b c"分隔到一個Stirng數組,即String [] result=str.split(" ");此時數組中的值為[a,b,c],我們可以循環列印:
for(inti=0;i<result.length;i++){
System.out.println(result[i]);
}
也就是說,我們可以輕易取得每個分隔的字元串(即a或者b或者c等),至於再進行什麼操作,就隨你了!
3. java中string的split功能,分割空格失敗
這里有可能是中文全形的空格,屬於特殊字元,\\s 是匹配不了的。 對應的ascii 值 為160.
驗證方法:
int a = 160;
char c = (char)a;
String s = String.valueOf(c);
String[] strb1=str1.split(s);
如果能拆分,就確定是這個問題。
當然有個解決方法是 替換: strb11 = strb1.replaceAll(String.valueOf((char)160), " ");
然後就可以按照你之前的方式處理了
4. java裡面的split方法
java和c#的split都差不多
以下是java的split的特性及一些例子:
java.lang.string.split
split 方法
將一個字元串分割為子字元串,然後將結果作為字元串數組返回。
stringObj.split([separator,[limit]])
stringObj
必選項。要被分解的 String 對象或文字。該對象不會被 split 方法修改。
separator
可選項。字元串或 正則表達式 對象,它標識了分隔字元串時使用的是一個還是多個字元。如果忽
略該選項,返回包含整個字元串的單一元素數組。
limit
可選項。該值用來限制返回數組中的元素個數。
說明:
split 方法的結果是一個字元串數組,在 stingObj 中每個出現 separator 的位置都要進行分解
。separator 不作為任何數組元素的部分返回。
示例1:
public class SplitDemo {
public static String[] ss = new String[20];
public SplitDemo() {
String s = "The rain in Spain falls mainly in the plain.";
// 在每個空格字元處進行分解。
ss = s.split(" ");
}
public static void main(String[] args) {
SplitDemo demo = new SplitDemo();
for (int i = 0; i < ss.length; i++)
System.out.println(ss[i]);
}
}
程序結果:
The
rain
in
Spain
falls
mainly
in
the
plain.
示例2:
public class SplitDemo {
public static String[] ss = new String[20];
public SplitDemo() {
String s = "The rain in Spain falls mainly in the plain.";
// 在每個空格字元處進行分解。
ss = s.split(" ", 2);
}
public static void main(String[] args) {
SplitDemo demo = new SplitDemo();
for (int i = 0; i < ss.length; i++)
System.out.println(ss[i]);
}
}
程序結果:
The
rain in Spain falls mainly in the plain.
示例3:
public class SplitDemo {
public static String[] ss = new String[20];
public SplitDemo() {
String s = "The rain in Spain falls mainly in the plain.";
// 在每個空格字元處進行分解。
ss = s.split(" ", 20);
}
public static void main(String[] args) {
SplitDemo demo = new SplitDemo();
for (int i = 0; i < ss.length; i++)
System.out.println(ss[i]);
}
}
程序結果:
The
rain
in
Spain
falls
mainly
in
the
plain.
示例4:
public class SplitDemo {
public static void main(String[] args) {
String value = "192.168.128.33";
String[] names = value.split(".");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
}
}
運行結果:
對,沒看錯!沒有任何輸出!
讓我們來看看 split 方法的方法簽名吧:
public string[] split(string regex)
這里的參數的名稱是 regex ,也就是 regular expression (正則表達式)。這個參數並不是一個簡單的分割用的字元,而是一個正則表達式,看了 split 方法的實現代碼就更堅定了我們的信心:
public string[] split(string regex, int limit) {
return pattern.compile(regex).split(this, limit);
}
split 的實現直接調用的 matcher 類的 split 的方法。讀者已經知道,「 . 」在正則表達式中有特殊的含義,因此我們使用的時候必須進行轉義。
只要將
String[] names = value.split(".");
改為
String[] names = value.split("//.");
就可以了。
輸出結果:
192
168
128
33
再加一點兒補充(這是Java幫助文檔中的,更清晰一些):
public String[] split(String regex,int limit)根據匹配給定的正則表達式來拆分此字元串。
此方法返回的數組包含此字元串的每個子字元串,這些子字元串由另一個匹配給定的表達式的子字元串終止或由字元串結束來終止。數組中的子字元串按它們在此字元串中的順序排列。如果表達式不匹配輸入的任何部分,則結果數組只具有一個元素,即此字元串。
limit 參數控制模式應用的次數,因此影響結果數組的長度。如果該限制 n 大於 0,則模式將被最多應用 n - 1 次,數組的長度將不會大於 n,而且數組的最後項將包含超出最後匹配的定界符的所有輸入。如果 n 為非正,則模式將被應用盡可能多的次數,而且數組可以是任意長度。如果 n 為零,則模式將被應用盡可能多的次數,數組可有任何長度,並且結尾空字元串將被丟棄。
例如,字元串 "boo:and:foo" 使用這些參數可生成下列結果:
Regex Limit 結果
: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" }
這種形式的方法調用 str.split(regex, n) 產生與以下表達式完全相同的結果:
Pattern.compile(regex).split(str, n)
參數:
regex - 定界正則表達式
limit - 結果閾值,如上所述
返回:
字元串數組,根據給定正則表達式的匹配來拆分此字元串,從而生成此數組
拋出:
PatternSyntaxException - 如果正則表達式的語法無效
從以下版本開始:
1.4
public String[] split(String regex)根據給定的正則表達式的匹配來拆分此字元串。
該方法的作用就像是使用給定的表達式和限制參數 0 來調用兩參數 split 方法。因此,結果數組中不包括結尾空字元串。
例如,字元串 "boo:and:foo" 產生帶有下面這些表達式的結果:
Regex 結果
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }
參數:
regex - 定界正則表達式
返回:
字元串數組,根據給定正則表達式的匹配來拆分此字元串,從而生成此數組。
拋出:
PatternSyntaxException - 如果正則表達式的語法無效
5. java的String類的split方法為何能生成空值
spilt是正則表達式中的一種,用來切分欄位,如果切分的欄位連續出現,就會生成空值。
用法為:字元串.spilt("特定字元"),輸出結果為String[]類型。
如:String [] list = "abbcabcabc".spilt("b");
那麼結果就是「a」,"","ca","ca","c";
獲取結果可以通過:list.get(下標)的形式(從0開始),如:list.get(1) 的結果就是「」(空值)。
6. java的split()方法,用空字元串對字元串"ABCDE"進行劃分得到的第一個字元串是空字元串嗎求解釋第0行。
輸出結果
packagecom.kidd.test.;
importjava.util.Arrays;
/**
*Helloworld!
*
*/
publicclassExecute{
publicstaticvoidmain(String[]args){
Stringstring="ABCDE";
String[]ss=string.split("");
System.out.println(Arrays.toString(ss));
}
}
7. java split方法以逗號分隔如字元串",,,,,,"為什麼分隔出來是一個空字元串數組
在資料庫系統中,空值是(什麼也沒有)。
解釋:
所謂的NULL就是什麼都沒有,連\0都沒有,\0在字元串中是結束符,但是在物理內存是占空間的,等於一個位元組,而NULL就是連這一個位元組都沒有。在資料庫里是嚴格區分的,任何數跟NULL進行運算都是NULL, 判斷值是否等於NULL,不能簡單用=,而要用IS關鍵字。
空 (NULL)
值表示數值未知(在實際意義中,如果使用null,就是代表變數值是未知的,比如手機號碼設為null,說明不知道手機號碼是什麼)。空值不同於空白或零值。沒有兩個相等的空值。比較兩個空值或將空值與任何其它數值相比均返回未知,這是因為每個空值均為未知。
在寫入數據的時候,空字元串也是一個確定的值,所以就算定義了 NOT NULL 也可以被寫入。
8. java String.split("\\&")切割"&&&&&&"為什麼不能切割成七個空字元串(String[7])如何才能正確切割
正確的分割方法是使用
s.split("\u0026"); 就可以了。
9. 我想用split(";")來分隔我的Java代碼, 但是若是字元串中有`;`我該怎麼辦
你的問題在於轉義的雙引號字元串內的分號不應該拿來分割。未解決這個問題只能將轉義的部分單獨截取出來,不參與分割,等其他部分分割結束後,再將轉義的內容拼接進去即可。
為防止雙引號轉義符內部還有其他雙引號轉義符"的影響,對\"用#@#佔位符將之替換。
需要引入第三方工具類輔助進行佔位符替換:
import org.apache.commons.lang3.StringUtils;
依賴為:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
代碼為:
public class Main {
public static void main(String[] args) {
String a = "String a = ";";String b = "aaaa";";
String b = "String a = "\";";String b = "aaaa";";
System.out.println(codeSplit(a));
System.out.println(codeSplit(b));
}
private static List<String> codeSplit(String a){
//排除雙引號轉義符內部還有其他雙引號轉義符"的影響,用「#@#」佔位符將之替換
a = StringUtils.replace(a, "\"", "#@#");
List<String> result = new ArrayList<>();
boolean start = true;//檢查雙引號轉義符,為true時代表找到雙引號轉義符的左轉義符,為false時代表找到雙引號轉義符的右轉義符
while (a.indexOf(""") > 0) {
int index = a.indexOf(""");//index:雙引號左轉義符位置
//發現雙引號轉義符時,將當前字元串的(0 至 index + 1)字元截取出來作為tmp
String tmp = a.substring(0, index + 1);
a = a.substring(index + 1);//將截取剩下的部分重新賦值給原字元串
if (start) {
//發現雙引號轉義符的左轉義符,對tmp字元串按分號進行分割,將不為空的結果添加到結果集中
String[] stArr = tmp.split(";");
for (String s : stArr) {
if (s.length() > 0) {
result.add(s);
}
}
} else {
//發現雙引號轉義符的右轉義符,不進行分割,將tmp字元串拼接到結果集的最後一個字元串中
String end = result.get(result.size() - 1);
end += tmp;
result.remove(result.size() - 1);
result.add(end);
}
start = !start;//轉置雙引號轉義符標志,正常情況下雙引號轉義符必須成對出現,否則將得到預期外的結果
}
//跳出循環後對剩餘的a字元串再做一次分割
String[] stArr = a.split(";");
for (String s : stArr) {
if (s.length() > 0) {
result.add(s);
}
}
//將結果集內的「#@#」佔位符還原為"
return result.stream().map(s -> StringUtils.replace(s, "#@#", "\"")).collect(Collectors.toList());
}
}
10. JAVA中可以用split按照空白字元串「」拆分 在C#中該如何實現
這只要用ToArray方法就可以了。
string name = "WTO";
string[] c = name.Select(s => s.ToString()).ToArray();
//注意,用ToArray返回的是char[],要將每個char轉為string。