在线等~~~~~~~~~~String的问题

1988_1989 2011-09-30 01:18:41
参数
AND_ThalassemiaGeneTest_TGTAlphaBehind__3.7α
或者是:
AND_ThalassemiaGeneTest_TGTAlphaBehind__ _SEA



想要把参数拆分为:AND ThalassemiaGeneTest TGTAlphaBehind _3.7α
AND ThalassemiaGeneTest TGTAlphaBehind _ _SEA
...全文
235 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
bohe_198878 2011-09-30
  • 打赏
  • 举报
回复
你指谁啊 这里这么多人 我XXXXXXXXX
打油的程序员 2011-09-30
  • 打赏
  • 举报
回复
还是写一个吧,不管对你是否有用


static String[] getResult(String src){
String[] result = new String[4];
int pre = 0;
for(int i=0; i<3; i++){
int index = src.indexOf("_",pre);
result[i] = src.substring(pre,index);
pre = index+1;
}
result[3] = src.substring(pre);
return result;
}
1988_1989 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ioe_gaoyong 的回复:]

看看这个满足你的要求么,不过你还需要再加上一些异常处理
Java code


import java.util.Arrays;

/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2011-9-30
* Time: 13:25:53
* To change this template use File | ……
[/Quote]


问题解决了,正解,正解,,谢谢啦,,,国庆节快乐啊,祝你有个愉快的假期。O(∩_∩)O~
bohe_198878 2011-09-30
  • 打赏
  • 举报
回复
楼主你看这样怎么样
String str="AND_ThalassemiaGeneTest_TGTAlphaBehind_BJFKD";
String s1=str.substring(0,str.lastIndexOf("_"));
String s2=str.substring(str.lastIndexOf("_")+1,str.length());
String[] arr=s1.split("_");
arr=Arrays.copyOf(arr,arr.length+1);
arr[arr.length]=s2;
for(String s:arr){
System.out.println(s);
}
风尘中国 2011-09-30
  • 打赏
  • 举报
回复
看看这个满足你的要求么,不过你还需要再加上一些异常处理


import java.util.Arrays;

/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2011-9-30
* Time: 13:25:53
* To change this template use File | Settings | File Templates.
*/
public class StringHandler {
public static String[] splitYourStr(String str){
String[] yourWant=new String[4];
String connect="_";
int a=str.indexOf(connect);
int b=str.indexOf(connect,a+1);
int c=str.indexOf(connect,b+1);

yourWant[0]=str.substring(0,a);
yourWant[1]=str.substring(a+1,b);
yourWant[2]=str.substring(b+1,c);
yourWant[3]=str.substring(c+1);

System.out.println(Arrays.toString(yourWant));
return yourWant;
}
public static void main(String[] args){
String str="AND_ThalassemiaGeneTest_TGTAlphaBehind__3.7α";
// String str="AND_ThalassemiaGeneTest_TGTAlphaBehind__ _SEA";
String[] r=splitYourStr(str);
System.out.println(Arrays.toString(r));


}
}


[Quote=引用 5 楼 zhuni_xingfu 的回复:]
引用 3 楼 k3108001263 的回复:

引用 2 楼 zhuni_xingfu 的回复:
现在我要得到一个数组:arr:[AND, ThalassemiaGeneTest, TGTAlphaBehind, _3.7α]
从中得到:
连接符:arr[0]
表名:arr[1]
字段名:arr[2]
字段值:arr[3]
用于数据库查询的。。。

Java code

……
[/Quote]
1988_1989 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kiss601459202 的回复:]

引用 5 楼 zhuni_xingfu 的回复:

引用 3 楼 k3108001263 的回复:

引用 2 楼 zhuni_xingfu 的回复:
现在我要得到一个数组:arr:[AND, ThalassemiaGeneTest, TGTAlphaBehind, _3.7α]
从中得到:
连接符:arr[0]
表名:arr[1]
字段名:arr[2]
字段值:arr[3]……
[/Quote]


如果参数是:AND_ThalassemiaGeneTest_TGTAlphaBehind_8J_dld
其中8J_dld是用户的输入的值,
这样正则表达式不通用了啊

打油的程序员 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhuni_xingfu 的回复:]

引用 3 楼 k3108001263 的回复:
上面的两个参数要使用同一个方法,进行拆分,,,,不能一个参数,写一个拆分方法,用户可以输入任意形式的字符串,传过来的参数还可能是 AND_ThalassemiaGeneTest_TGTAlphaBehind_BJFKD
或者AND_ThalassemiaGeneTest_TGTAlphaBehind_8Jdld
等等,
要使用一个通用的方法,进行拆分,

[/Quote]

你给多几组数据还是不够特殊,或者说你没考虑全面。

你那几组数据压根不需用正则。使用indexOf() 和 SubString() 都可以对付了
bohe_198878 2011-09-30
  • 打赏
  • 举报
回复
先截取到最后一个_,然后split("_")得到数组,进行数组扩容把最后的字符串加进去
kiss601459202 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhuni_xingfu 的回复:]

引用 3 楼 k3108001263 的回复:

引用 2 楼 zhuni_xingfu 的回复:
现在我要得到一个数组:arr:[AND, ThalassemiaGeneTest, TGTAlphaBehind, _3.7α]
从中得到:
连接符:arr[0]
表名:arr[1]
字段名:arr[2]
字段值:arr[3]
用于数据库查询的。。。

Java code
……
[/Quote]

用正则

for example

public static void getNum(String str) {
System.out.println(str.replaceAll("[a-zA-Z0-9]_", " "));
for (String s : str.split("[a-zA-Z0-9]_")) {
System.out.println(s);
}
}
1988_1989 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 k3108001263 的回复:]

引用 2 楼 zhuni_xingfu 的回复:
现在我要得到一个数组:arr:[AND, ThalassemiaGeneTest, TGTAlphaBehind, _3.7α]
从中得到:
连接符:arr[0]
表名:arr[1]
字段名:arr[2]
字段值:arr[3]
用于数据库查询的。。。

Java code

String resulString = "AND_……
[/Quote]



上面的两个参数要使用同一个方法,进行拆分,,,,不能一个参数,写一个拆分方法,用户可以输入任意形式的字符串,传过来的参数还可能是 AND_ThalassemiaGeneTest_TGTAlphaBehind_BJFKD
或者AND_ThalassemiaGeneTest_TGTAlphaBehind_8Jdld
等等,
要使用一个通用的方法,进行拆分,
打油的程序员 2011-09-30
  • 打赏
  • 举报
回复
上面的只能处理特殊情况 你给多些数据。我帮你找找规律,用正则帮你解决
打油的程序员 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhuni_xingfu 的回复:]
现在我要得到一个数组:arr:[AND, ThalassemiaGeneTest, TGTAlphaBehind, _3.7α]
从中得到:
连接符:arr[0]
表名:arr[1]
字段名:arr[2]
字段值:arr[3]
用于数据库查询的。。。
[/Quote]

String resulString = "AND_ThalassemiaGeneTest_TGTAlphaBehind__3.7α".replaceFirst("_ThalassemiaGeneTest_TGTAlphaBehind_"," ThalassemiaGeneTest TGTAlphaBehind ");
;;
String arr[] = resulString.split(" ");
for(String s : arr){
System.out.println(s);
}
1988_1989 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 k3108001263 的回复:]

Java code

System.out.println("AND_ThalassemiaGeneTest_TGTAlphaBehind__3.7α".replaceFirst("_ThalassemiaGeneTest_TGTAlphaBehind_"," ThalassemiaGeneTest TGTAlphaBehind "));
System.out.println("AND……
[/Quote]


现在我要得到一个数组:arr:[AND, ThalassemiaGeneTest, TGTAlphaBehind, _3.7α]
从中得到:
连接符:arr[0]
表名:arr[1]
字段名:arr[2]
字段值:arr[3]
用于数据库查询的。。。
打油的程序员 2011-09-30
  • 打赏
  • 举报
回复

System.out.println("AND_ThalassemiaGeneTest_TGTAlphaBehind__3.7α".replaceFirst("_ThalassemiaGeneTest_TGTAlphaBehind_"," ThalassemiaGeneTest TGTAlphaBehind "));
System.out.println("AND_ThalassemiaGeneTest_TGTAlphaBehind__ _SEA".replaceFirst("_ThalassemiaGeneTest_TGTAlphaBehind_"," ThalassemiaGeneTest TGTAlphaBehind "));



阿明的FoxShell 2012免费版下载(Beta2 20110802) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FoxShell 2012 免费版更新说明 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2011.08.02 Beta2(Build 0802) FoxShell2012_Beta2.Exe 文件大小:1.86 MB (1,953,792 字节) CRC32:79EB97B3 MD5:FE77C4C48786E6BD9940F3E0EE5BD185 SHA1:B5C07293F7E0FEBBCA1A00B819E1CE94BB07037C 修正的BUG: 1、修正VB通过API调用保存对话框与LZMA压缩冲突的BUG,出现压缩数据失败(已换一种模式重写LZMA的SDK,有效解决了这个问题); 2、修正WIN7下加密成功但不能生成文件的BUG; 3、修正用项目文件打开文件加密丢失图标的BUG; 4、修正打开项目后,读写文件深度不一致的BUG; 5、修正开启新变量解释后,对某些语句和命令出现“非字符表达式”的BUG; 6、修正和增加新P-CODE解释开关命令:经测试不能被新P-CODE解释方式接受的代码,可以自己在代码中加入: = "<Skip FoxShell Start>" && 开始忽略(关闭)新代码解释方式,不分大小写 = "<Skip FoxShell End>" && 结束忽略(启用)新代码解释方式,不分大小写 例如: FUNCTION WriteIniFile LPARAMETERS lcfilename, lcsection, lcsection_key, lcwrite_string = "<Skip FoxShell Start>" DECLARE INTEGER WritePrivateProfileString IN Win32API AS WriteINI STRING, STRING, STRING, STRING && 假设这一句使用新代码解释后出错,则在前后加跳过这句的开关 = "<Skip FoxShell End>" IF TYPE("m.lcFileName")="C" .AND. TYPE("m.lcSection")="C" .AND. TYPE("m.lcSection_key")="C" .AND. TYPE("m.lcWrite_String")="C" IF EMPTY(m.lcfilename) .OR. EMPTY(m.lcsection) .OR. EMPTY(m.lcsection_key) RETURN "" ELSE IF .NOT. EMPTY(JUSTPATH(m.lcfilename)) .AND. .NOT. DIRECTORY(JUSTPATH(m.lcfilename)) MD (JUSTPATH(m.lcfilename)) ENDIF ENDIF = WriteINI(m.lcsection, m.lcsection_key, m.lcwrite_string, m.lcfilename) ENDIF CLEAR DLLS "WritePrivateProfileString" ENDFUNC 感谢我的用户老康提供上面的例子。 注意:如果您的文件包含64K以上的类库,请将FoxShell读取文件规则的深度调整为1,以避免出错。 ★★★ 由于本软件使用了编译技术,在加密过程中,为加密成功,请暂时关闭您的杀毒软件。
FoxShell2012免费版+中文使用说明 阿明的FoxShell 2012免费版下载(Beta2 20110802) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ FoxShell 2012 免费版更新说明 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2011.08.02 Beta2(Build 0802) FoxShell2012_Beta2.Exe 文件大小:1.86 MB (1,953,792 字节) CRC32:79EB97B3 MD5:FE77C4C48786E6BD9940F3E0EE5BD185 SHA1:B5C07293F7E0FEBBCA1A00B819E1CE94BB07037C 修正的BUG: 1、修正VB通过API调用保存对话框与LZMA压缩冲突的BUG,出现压缩数据失败(已换一种模式重写LZMA的SDK,有效解决了这个问题); 2、修正WIN7下加密成功但不能生成文件的BUG; 3、修正用项目文件打开文件加密丢失图标的BUG; 4、修正打开项目后,读写文件深度不一致的BUG; 5、修正开启新变量解释后,对某些语句和命令出现“非字符表达式”的BUG; 6、修正和增加新P-CODE解释开关命令:经测试不能被新P-CODE解释方式接受的代码,可以自己在代码中加入: = "<Skip FoxShell Start>" && 开始忽略(关闭)新代码解释方式,不分大小写 = "<Skip FoxShell End>" && 结束忽略(启用)新代码解释方式,不分大小写 例如: FUNCTION WriteIniFile LPARAMETERS lcfilename, lcsection, lcsection_key, lcwrite_string = "<Skip FoxShell Start>" DECLARE INTEGER WritePrivateProfileString IN Win32API AS WriteINI STRING, STRING, STRING, STRING && 假设这一句使用新代码解释后出错,则在前后加跳过这句的开关 = "<Skip FoxShell End>" IF TYPE("m.lcFileName")="C" .AND. TYPE("m.lcSection")="C" .AND. TYPE("m.lcSection_key")="C" .AND. TYPE("m.lcWrite_String")="C" IF EMPTY(m.lcfilename) .OR. EMPTY(m.lcsection) .OR. EMPTY(m.lcsection_key) RETURN "" ELSE IF .NOT. EMPTY(JUSTPATH(m.lcfilename)) .AND. .NOT. DIRECTORY(JUSTPATH(m.lcfilename)) MD (JUSTPATH(m.lcfilename)) ENDIF ENDIF = WriteINI(m.lcsection, m.lcsection_key, m.lcwrite_string, m.lcfilename) ENDIF CLEAR DLLS "WritePrivateProfileString" ENDFUNC 感谢我的用户老康提供上面的例子。 注意:如果您的文件包含64K以上的类库,请将FoxShell读取文件规则的深度调整为1,以避免出错。 ★★★ 由于本软件使用了编译技术,在加密过程中,为加密成功,请暂时关闭您的杀毒软件。 主程序已加壳,感谢Nooby提供的『 Shielden 』。由于加壳,启动较慢,也可能被误报。

62,630

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧