我想在不使用拆分的情况下拆分字符串。任何人都可以解决我的问题但我尝试过 我找不到确切的逻辑。
答案 0 :(得分:9)
由于这似乎是一个设计为编码实践的任务,我只会指导。先生,没有代码,虽然逻辑和代码并没有那么远。
您需要循环遍历字符串的每个字符,并确定该字符是否为分隔符(例如,逗号或分号)。如果没有,请将其添加到您计划返回的数组的最后一个元素。如果是分隔符,则创建一个新的空字符串作为数组开始输入字符的最后一个元素。
答案 1 :(得分:2)
我会假设这是作业,所以我只会提供片段作为提示:
以下是使用indexOf
和fromIndex
参数查找较大字符串中所有子字符串的示例:
String text = "012ab567ab0123ab";
// finding all occurrences forward: Method #1
for (int i = text.indexOf("ab"); i != -1; i = text.indexOf("ab", i+1)) {
System.out.println(i);
} // prints "3", "8", "14"
// finding all occurrences forward: Method #2
for (int i = -1; (i = text.indexOf("ab", i+1)) != -1; ) {
System.out.println(i);
} // prints "3", "8", "14"
int indexOf(String, int fromIndex)
此代码段从字符串中的给定索引处提取substring
并将它们放入List<String>
:
String text = "0123456789abcdefghij";
List<String> parts = new ArrayList<String>();
parts.add(text.substring(0, 5));
parts.add(text.substring(3, 7));
parts.add(text.substring(9, 13));
parts.add(text.substring(18, 20));
System.out.println(parts); // prints "[01234, 3456, 9abc, ij]"
String[] partsArray = parts.toArray(new String[0]);
一些关键想法:
String substring(int beginIndex, int endIndex)
beginIndex
开始,并扩展到索引endIndex - 1
处的字符。答案 2 :(得分:2)
这是正确答案
import java.util.StringTokenizer;
public class tt {
public static void main(String a[]){
String s = "012ab567ab0123ab";
String delims = "ab ";
StringTokenizer st = new StringTokenizer(s, delims);
System.out.println("No of Token = " + st.countTokens());
while (st.hasMoreTokens())
{
System.out.println(st.nextToken());
}
}
}
答案 3 :(得分:1)
现在你做的是大多数java标准库是开源的
在这种情况下,您可以启动here
答案 4 :(得分:1)
使用String tokenizer在没有split
的情况下拆分Java中的字符串:
import java.util.StringTokenizer;
public class tt {
public static void main(String a[]){
String s = "012ab567ab0123ab";
String delims = "ab ";
StringTokenizer st = new StringTokenizer(s, delims);
System.out.println("No of Token = " + st.countTokens());
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
}
答案 5 :(得分:1)
#version 430
in vec4 normal;
in vec2 uv0;
out vec4 outFragColor;
uniform sampler2D TEXTURE_0;
uniform vec3 DirectionalLightDirection;
uniform vec4 DiffuseReflectance;
uniform float Shininess;
//Blinn-Phong lighting ... TODO make this a macro
float calculateDiffuseTerm(vec3 N, vec3 L)
{
return clamp(dot(N, L), 0.0, 1.0);
}
float calculateSpecularTermWithHalfVector(vec3 N, vec3 L, vec3 V)
{
float term = 0.0;
if(dot(N, L) > 0.0)
{
vec3 H = normalize(L+V);
term = pow(dot(N, H), Shininess);
}
return term;
}
void main()
{
//Calculate diffuse
vec4 textureColor = texture(TEXTURE_0, uv0);
vec3 directionalLight = -1.0 * DirectionalLightDirection;
float diffuseTerm = calculateDiffuseTerm(normalize(normal.xyz), directionalLight);
outFragColor = normalize(normal);// diffuseTerm * DiffuseReflectance;
}
答案 6 :(得分:1)
您可以尝试,我做的方式是{{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
for(int i = 0; i <str.length();i++) {
if(str.charAt(i)==' ') { // whenever it found space it'll create separate words from string
System.out.println();
continue;
}
System.out.print(str.charAt(i));
}
sc.close();
}`
答案 7 :(得分:0)
逻辑是:从第一个字符开始遍历整个字符串,每当你找到一个空格时,将最后一个部分复制到一个新字符串......那不是很难吗?
答案 8 :(得分:0)
你不能拆分使用split()。您唯一的另一个选择是获取字符串char索引并获取子字符串。
答案 9 :(得分:0)
要做的就是首先定义您需要的功能。在这种情况下,它可能是:
String[] split(String s, String separator)
返回类型不必是数组。它也可以是一个列表:
List<String> split(String s, String separator)
代码大致如下:
您需要考虑许多优点:
答案 10 :(得分:0)
您可以使用Java标准库来完成此操作。
说分隔符是:
和
String s = "Harry:Potter"
int a = s.find(delimiter);
然后添加
s.substring(start, a)
到一个新的String数组。
继续这样做,直至start < string length
我猜应该够了。
答案 11 :(得分:0)
public class MySplit {
public static String[] mySplit(String text,String delemeter){
java.util.List<String> parts = new java.util.ArrayList<String>();
text+=delemeter;
for (int i = text.indexOf(delemeter), j=0; i != -1;) {
parts.add(text.substring(j,i));
j=i+delemeter.length();
i = text.indexOf(delemeter,j);
}
return parts.toArray(new String[0]);
}
public static void main(String[] args) {
String str="012ab567ab0123ab";
String delemeter="ab";
String result[]=mySplit(str,delemeter);
for(String s:result)
System.out.println(s);
}
}
答案 12 :(得分:0)
public class WithoutSpit_method {
public static void main(String arg[])
{
char[]str;
String s="Computer_software_developer_gautam";
String s1[];
for(int i=0;i<s.length()-1;)
{
int lengh=s.indexOf("_",i);
if(lengh==-1)
{
lengh=s.length();
}
System.out.print(" "+s.substring(i,lengh));
i=lengh+1;
}
}
}
结果:计算机软件开发人员gautam
答案 13 :(得分:0)
这是我使用Scanner的方式;
import java.util.Scanner;
public class spilt {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.print("Enter the String to be Spilted : ");
String st = input.nextLine();
Scanner str = new Scanner(st);
while (str.hasNext())
{
System.out.println(str.next());
}
}
}
希望对您有帮助!!!!
答案 14 :(得分:0)
public class StringWitoutPre {
public static void main(String[] args) {
String str = "md taufique reja";
int len = str.length();
char ch[] = str.toCharArray();
String tmp = " ";
boolean flag = false;
for (int i = 0; i < str.length(); i++) {
if (ch[i] != ' ') {
tmp = tmp + ch[i];
flag = false;
} else {
flag = true;
}
if (flag || i == len - 1) {
System.out.println(tmp);
tmp = " ";
}
}
}
}
答案 15 :(得分:-1)
Split a string without using split()
static String[] splitAString(String abc, char splitWith){
char[] ch=abc.toCharArray();
String temp="";
int j=0,length=0,size=0;
for(int i=0;i<abc.length();i++){
if(splitWith==abc.charAt(i)){
size++;
}
}
String[] arr=new String[size+1];
for(int i=0;i<ch.length;i++){
if(length>j){
j++;
temp="";
}
if(splitWith==ch[i]){
length++;
}else{
temp +=Character.toString(ch[i]);
}
arr[j]=temp;
}
return arr;
}
public static void main(String[] args) {
String[] arr=splitAString("abc-efg-ijk", '-');
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}