相关疑难解决方法(0)

拆分字符串,将元素放入List中,并带有两个可能的分隔符

我想在两个可能的分隔符"/"或"//"上将字符串拆分为List.但更重要的是,分隔符也应该放在同一个列表中.我不能用Guava中的Splitter或java.util.Scanner来做这个.

Scanner s = new Scanner(str);
s.useDelimiter("//|/");
while (s.hasNext()) {
    System.out.println(s.delimiter());
    System.out.println(s.next());
}
Run Code Online (Sandbox Code Playgroud)

s.delimiter()回报//|/.我想得到///.

你知道其他任何一个可以做到这一点的图书馆吗?

我写了一些代码,它可以工作,但它不是很好的解决方案:

public static ArrayList<String> processString(String s) {
    ArrayList<String> stringList = new ArrayList<String>();
    String word = "";
    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) == '/' && i < s.length() && s.charAt(i + 1) == '/') {
            if (!word.equals(""))
                stringList.add(word);
            stringList.add("//");
            word = "";
            i++;
        } else if (s.charAt(i) == '/') {
            if (!word.equals("")) …
Run Code Online (Sandbox Code Playgroud)

java string split splitter delimiter

1
推荐指数
1
解决办法
958
查看次数

基于正则表达式拆分字符串但保留分隔符

我正在尝试使用各种字符作为分隔符来分割字符串,并将这些分隔符保留在它们自己的数组索引中.例如,说我要拆分字符串:

if(x> 1)返回x*fact(x-1);

使用'(','>',')','*',' - ',';' 和'\ s'作为分隔符.我希望输出为以下字符串数组:{"if","(","x",">","1",")","return","x","*","事实","(","x"," - ","1",")",";"}

我到目前为止使用的正则表达式是 split("(?=(\\w+(?=[\\s\\+\\-\\*/<(<=)>(>=)(==)(!=)=;,\\.\"\\(\\)\\[\\]\\{\\}])))")

它会在每个单词字符处分开,而不管它是否跟在其中一个分隔符之后.例如

测试+ 1

输出{"t","e","s","t +","1"}而不是{"test +","1"}

为什么它会在每个角色上分裂,即使该角色没有被我的一个分隔符跟着?也是一个正则表达式,甚至可以在Java中实现这一点?谢谢

java regex split delimiter

1
推荐指数
1
解决办法
1622
查看次数

Java String to Array Splitting

我有一个字符串,例如: "My brother, John, is a handsome man."

我想将其拆分为一个数组,使输出为:

"My" , "brother", "," , "John", "," , "is", "a", "handsome", "man", "."
Run Code Online (Sandbox Code Playgroud)

谁能帮我这个?我需要在Java上执行此操作.

java split

1
推荐指数
1
解决办法
102
查看次数

使用正则表达式在java上拆分数字字符串

我想在Java上使用正则表达式来分割数字字符串.我使用在线正则表达式测试器测试正则表达式是对的.但在Java中是错误的.

Pattern pattern = Pattern.compile("[\\\\d]{1,4}");
String[] results = pattern.split("123456");
// I expect 2 results ["1234","56"]
// Actual results is ["123456"]
Run Code Online (Sandbox Code Playgroud)

我有什么遗失的吗?


我知道这个问题很无聊.但我想解决这个问题.回答

Pattern pattern = Pattern.compile("[\\d]{1,4}");
String[] results = pattern.split("123456");
// Results length is 0
System.out.println(results.length);
Run Code Online (Sandbox Code Playgroud)

不管用.我试过了.它不会返回结果.请在回答之前尝试一下.

真诚地感谢帮助我的人们.


解:

Pattern pattern = Pattern.compile("([\\d]{1,4})");
Matcher matcher = pattern.matcher("123456");
List<String> results = new ArrayList<String>();
while (matcher.find()) {
    results.add(matcher.group(1));
}
Run Code Online (Sandbox Code Playgroud)

输出2结果["1234","56"]

java regex

0
推荐指数
1
解决办法
2538
查看次数

Java - 正则表达式分割输入文本但保留分隔符

寻找一些正则表达式的帮助.我正在寻找一种Java方法,用文字分割一些输入文本,但也保留分隔符(空格,标点符号).另一种方法是将单词拆分为自己的索引,其他非单词字符可以放在数组的其他索引中.

这个输入文字:

"Hello, this isn't working!"
Run Code Online (Sandbox Code Playgroud)

应该放入这样的数组:

{"Hello", ",", "this", "isn't", "working", "!"}
Run Code Online (Sandbox Code Playgroud)

要么

{"Hello", ", ", "this", " ", "isn't", " ", "working", "!"}
Run Code Online (Sandbox Code Playgroud)

我用Python做了基本相同的事情:

def split_input(string):
    return re.findall(r"[\w']+|[\s.,!?;:-]", string)
Run Code Online (Sandbox Code Playgroud)

但我还没有找到一种在Java中完成同样事情的方法.我尝试String.split()过前瞻/后视,我尝试过模式匹配,但运气不好.

任何帮助将非常感激!

java regex

0
推荐指数
1
解决办法
6097
查看次数

难以在分隔符处拆分字符串并保留它

我有一个成对读取的字符串,以逗号分隔.但是,我并不总是想用逗号分割,因为输入中并不总是有1个逗号.例如,字符串,

(http://www.wolframalpha.com/input/?i=103%2F30+%3D+4a-3b,+71%2F60+%3D+a+%2B+b
,http://www.wolframalpha.com/input/?i=x%5E2%2B5x%2B6,file:///tmp/foo/bar/p,d,f.pdf)
Run Code Online (Sandbox Code Playgroud)

全部读一行.对于这种情况,我只想在字符串中的,h和no处分开.基本上,在拆分后,字符串应该是:

http://www.wolframalpha.com/input/?i=103%2F30+%3D+4a-3b,+71%2F60+%3D+a+%2B+b

http://www.wolframalpha.com/input/?i=x%5E2%2B5x%2B6

file:///tmp/foo/bar/p,d,f.pdf
Run Code Online (Sandbox Code Playgroud)

在第一个字符串中维护逗号的顺序.(我将摆脱括号).我看过这个堆栈溢出问题,虽然有帮助,但是没有正确拆分这个字符串.这是Java.任何帮助表示赞赏.

java regex string split

0
推荐指数
1
解决办法
58
查看次数

Android将TextView拆分为字符串

我希望每次有@时都能将TextView拆分成新的字符串.

例如,如果TextView说"你好,你@我在哪里@学校"

输出:字符串一="@我是"

字符串二="@ school"

我试过了

String[] separated = text.getText().toString().split("@ · ");
tv.setText("first " + separated[0] + " next " +  separated[1] +  " next " +  separated[2] + " next " + separated[3]);
Run Code Online (Sandbox Code Playgroud)

string android split textview

-1
推荐指数
1
解决办法
2059
查看次数

标签 统计

java ×6

split ×5

regex ×4

string ×3

delimiter ×2

android ×1

splitter ×1

textview ×1