估计重写split才行了 class Test { public static void main(String[] args) { String s = "\"abcd\",\"abcd\",\"sfsfd\",\"erwrwer\""; int len = s.split("\",\"|\"").length; String[] arr = new String[len-1]; System.arraycopy(s.split("\",\"|\""),1,arr,0,len-1); for(int i=0;i<arr.length;i++) System.out.println(arr[i]); } }
import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; class Test { public static List<String> split(String input, String regex, boolean splitChar, boolean isAfter) { List<String> list = new ArrayList<String>(); if (null == input || "".equals(input)) { return list; } int beginIndex = 0; int length = input.length(); Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(input); while (matcher.find()) { int matcherStart = matcher.start(); int matcherEnd = matcher.end(); String ele = ""; if (splitChar && isAfter) { ele = input.substring(beginIndex, matcherEnd); } else { ele = input.substring(beginIndex, matcherStart); }
public static void main(String[] args) { String s = "\"abcd\",\"abcd\",\"sfsfd\",\"erwrwer\""; /*int len = s.split("\",\"|\"").length; String[] arr = new String[len-1]; System.arraycopy(s.split("\",\"|\""),1,arr,0,len-1);*/ List l =split(s,"\",\"|\""); System.out.println(l); } }
public static void main(String[] args) { // TODO Auto-generated method stub String str = "\"abc\",\"123\",\"你好\",\"why\","; String[] temp = str.split("\\p{Punct}+"); for(int i = 0;i<temp.length;i++){ System.out.println(temp[i]); } } 不知道这样可以不啊?
String[] array = str.replaceAll("\"", "").split(",");
for(String s : array){
System.out.println(s);
}
哪里慢?replaceAll ?
也不能说慢,只是我的这个表达式是传过来的,不能用replaceAll,
这个地方写死了的,
你只能通过split来处理
String str ="“abcd”,\"abcd\",\"sfsfd\",\"erwrwer\"";
String[] names = str.replaceAll("^[“”\",,]+(?=[^“”\",,])|(?<=[^“”\",,])[“”\",,]+$","").split("[“”\",,]+");
for(String n:names){
System.out.println(n);
}逗号引号
{
public static void main(String[] args)
{
String s = "\"abcd\",\"abcd\",\"sfsfd\",\"erwrwer\"";
String[] arr = s.replaceAll("\"","").split(",",-1);
for(int i=0;i<arr.length;i++)
System.out.println(arr[i]);
}
}
不能用别的
只做为split()的参数,写死了
那就
StringTokenizer st = new StringTokenizer(str,"\",\"");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}没发现你说的多空格
只能用split ,多分出一个元素,
int length = s.length();
int i = 0;
List<String> list = new ArrayList<String>();
StringBuffer sb = new StringBuffer();
while(i<length){
char ch = s.charAt(i);
if(ch==','||i==length-1){
list.add(sb.toString());
sb = null;
sb = new StringBuffer();
}else{
if(ch!=34&&ch!='“'&&ch!='”'){
sb.append(ch);
}
}
i++;
}
你分出字符串如
字符中 分割符 结果
abc,abc,abc , abc abc abc
"abc","abc","abc" 这个分割符不会写 abc abc abc
abc!abc!abc ! abc abc abc 直接调用split来处理,所以,现在我只要split的参数,这个参数如何来写。。
a12
efg"不replaceAll没戏吧
for (String s : str.split("\",\"|\"")) {
System.out.println(s);
}
就算是用正则,前面也会多出一个空字符串的元素,你这个问题无解,因为是分割,不是查找匹配项,查找匹配项还能作一作文章,分割的话,第一个空字符串是无论如何免不了的。
class Test
{
public static void main(String[] args)
{
String s = "\"abcd\",\"abcd\",\"sfsfd\",\"erwrwer\"";
String[] arr = s.split("\"",-1);
for(int i=0;i<arr.length;i++)
if(!arr[i].equals(","))
{
System.out.println(arr[i]);
}
}
}
class Test
{
public static void main(String[] args)
{
String s = "\"abcd\",\"abcd\",\"sfsfd\",\"erwrwer\"";
String[] arr = s.split("\"",-1);
// System.out.println(arr.length);
for(int i=0;i<arr.length;i++)
if(!arr[i].equals(",")&&!arr[i].equals(""))
{
System.out.println(arr[i]);
}
System.out.println("---------------------------");
}
}
String str="abcd,abcd,sfsfd,erwrwer";
for(String fenge :str.split(","))
System.out.println(fenge); 输出结果如下:abcd
abcd
sfsfd
erwrwer
只能用split,只要split里的分割字符串。
class Test
{
public static void main(String[] args)
{
String s = "\"abcd\",\"abcd\",\"sfsfd\",\"erwrwer\"";
String[] arr = s.split(",|\"",-1);
//System.out.println(arr.length);
for(int i=0;i<arr.length;i++)
System.out.println(arr[i]); }
}
class Test
{
public static void main(String[] args)
{
String s = "\"abcd\",\"abcd\",\"sfsfd\",\"erwrwer\"";
String[] arr = s.split("\",\"|\"\"\"|\"|,");
System.out.println(arr.length);
for(int i=0;i<arr.length;i++)
System.out.println(arr[i]); }
}
{
public static void main(String[] args)
{
String s = "\"abcd\",\"abcd\",\"sfsfd\",\"erwrwer\"";
String[] arr = s.split("\",\"|\"\"\"|\"|,");
System.out.println(arr.length);
for(int i=0;i<arr.length;i++)
System.out.println(arr[i]); }
}
一种是先替换掉最前面的"然后按","split;
另一种是按","或者"split之后抹去空的那个;
但你好像替换和抹去动作都是禁止了。
String s = "\"abcd\",\"abcd\",\"sfsfd\",\"erwrwer\"";
String [] t=s.split("\"|,");
System.out.println(t.length);
for(int i=0;i<t.length;i++)
{
System.out.println(t[i]);
}
崩溃了,前面还有个空格
{
public static void main(String[] args)
{
String s = "\"abcd\",\"abcd\",\"sfsfd\",\"erwrwer\"";
int len = s.split("\",\"|\"").length;
String[] arr = new String[len-1];
System.arraycopy(s.split("\",\"|\""),1,arr,0,len-1);
for(int i=0;i<arr.length;i++)
System.out.println(arr[i]); }
}
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Test
{
public static List<String> split(String input, String regex, boolean splitChar, boolean isAfter)
{
List<String> list = new ArrayList<String>();
if (null == input || "".equals(input))
{
return list;
}
int beginIndex = 0;
int length = input.length();
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find())
{
int matcherStart = matcher.start();
int matcherEnd = matcher.end();
String ele = "";
if (splitChar && isAfter)
{
ele = input.substring(beginIndex, matcherEnd);
}
else
{
ele = input.substring(beginIndex, matcherStart);
}
if (splitChar)
{
if (isAfter)
{
beginIndex = matcherEnd;
}
else
{
beginIndex = matcherStart;
}
}
else
{
beginIndex = matcherEnd;
}
if (0 == matcherStart && false == isAfter)
{
continue;
}
list.add(ele);
}
if (beginIndex < length)
{
list.add(input.substring(beginIndex));
}
return list;
}
public static List<String> split(String input, String regex, boolean splitChar)
{
return split(input, regex, splitChar, false);
}
public static List<String> split(String input, String regex)
{
return split(input, regex, false);
}
public static void main(String[] args)
{
String s = "\"abcd\",\"abcd\",\"sfsfd\",\"erwrwer\"";
/*int len = s.split("\",\"|\"").length;
String[] arr = new String[len-1];
System.arraycopy(s.split("\",\"|\""),1,arr,0,len-1);*/
List l =split(s,"\",\"|\"");
System.out.println(l);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "\"abc\",\"123\",\"你好\",\"why\",";
String[] temp = str.split("\\p{Punct}+");
for(int i = 0;i<temp.length;i++){
System.out.println(temp[i]);
}
}
不知道这样可以不啊?
感谢 lizhou